在未作为参数传递时使用请求

时间:2018-03-18 10:23:05

标签: python django

我正在尝试覆盖一个方法,但是,它不会将request作为参数。基本上,我想根据请求用户添加条件,我可以添加一个小例子:

def has_to_be_overwritten(queryset=None, *args, **kwargs):
    if request.user.is_superuser:
        do magic
    else:
        no magic

这是可能的还是我应该寻找不同的解决方案?

1 个答案:

答案 0 :(得分:0)

我假设您正在使用 FBV

因此,如果您尝试在FBV中使用代码,则会引发NameError,因为您尚未定义request变量。在我看来,你应该在FBV之外定义你的函数,函数应该将request对象作为默认参数,这是你上下文中的主要对象 试试这个代码,

def has_to_be_overwritten(request, queryset=None, *args, **kwargs):
    # request is the default argument
    if request.user.is_superuser:
        do magic
    else:
        no magic

def my_view(request):
    # some stuffs with your view
    has_to_be_overwritten(request)
    # do some other stuff
    return Some_HttpResponse