我正在尝试覆盖一个方法,但是,它不会将request
作为参数。基本上,我想根据请求用户添加条件,我可以添加一个小例子:
def has_to_be_overwritten(queryset=None, *args, **kwargs):
if request.user.is_superuser:
do magic
else:
no magic
这是可能的还是我应该寻找不同的解决方案?
答案 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