django HttpResponseRedirect from函数
我有这样的代码django HttpResponseRedirect from函数,django,Django,我有这样的代码 def checkLogin(request) if request.user.is_authenticated: return None else: return HttpResponseRedirect(reverse(login)) def somePage(request) checkLogin(request) #kicks the user out if not login #do other th
def checkLogin(request)
if request.user.is_authenticated:
return None
else:
return HttpResponseRedirect(reverse(login))
def somePage(request)
checkLogin(request) #kicks the user out if not login
#do other things here if not kick out
我想在我的许多视图中检查login,所以我想把它放在一个易于使用的函数中
但是,由于某些原因,HttpResponseRedirect不起作用。我可以使用render,但不能使用httpresponseredirect。有来自Django.contrib.auth.decorators的内置Django解决方案
,需要导入登录名
您只需将decorator放在上面:
@login_required
def somFunc():
或者,如果它是django.utils.decorators导入方法\u decorator的通用视图而不是函数:
@method_decorator(login_required)
def dispatch(self, request, *args, **kwargs):
Django.contrib.auth.decorators中有内置的Django解决方案,需要导入登录名
您只需将decorator放在上面:
@login_required
def somFunc():
或者,如果它是django.utils.decorators导入方法\u decorator的通用视图而不是函数:
@method_decorator(login_required)
def dispatch(self, request, *args, **kwargs):
Django.contrib.auth.decorators中有内置的Django解决方案,需要导入登录名
您只需将decorator放在上面:
@login_required
def somFunc():
或者,如果它是django.utils.decorators导入方法\u decorator的通用视图而不是函数:
@method_decorator(login_required)
def dispatch(self, request, *args, **kwargs):
Django.contrib.auth.decorators中有内置的Django解决方案,需要导入登录名
您只需将decorator放在上面:
@login_required
def somFunc():
或者,如果它是django.utils.decorators导入方法\u decorator的通用视图而不是函数:
@method_decorator(login_required)
def dispatch(self, request, *args, **kwargs):
对于您的用例,您可以使用登录所需的装饰器
但是,通常只有view函数的返回值作为HttpResponse返回,您可以执行以下操作:
def checkLogin(request)
if request.user.is_authenticated:
return None
else:
return HttpResponseRedirect(reverse(login))
def somePage(request)
needs_login = checkLogin(request) #kicks the user out if not login
if needs_login:
return needs_login
#do other things here if not kick out
唯一的例外是当您想要返回404时。您可以引发404异常,该异常将冒泡进入视图
def checkLogin(request)
if not request.user.is_authenticated:
raise Http404
def somePage(request)
checkLogin(request) #kicks the user out if not login
#do other things here if not kick out
对于您的用例,您可以使用登录所需的装饰器
但是,通常只有view函数的返回值作为HttpResponse返回,您可以执行以下操作:
def checkLogin(request)
if request.user.is_authenticated:
return None
else:
return HttpResponseRedirect(reverse(login))
def somePage(request)
needs_login = checkLogin(request) #kicks the user out if not login
if needs_login:
return needs_login
#do other things here if not kick out
唯一的例外是当您想要返回404时。您可以引发404异常,该异常将冒泡进入视图
def checkLogin(request)
if not request.user.is_authenticated:
raise Http404
def somePage(request)
checkLogin(request) #kicks the user out if not login
#do other things here if not kick out
对于您的用例,您可以使用登录所需的装饰器
但是,通常只有view函数的返回值作为HttpResponse返回,您可以执行以下操作:
def checkLogin(request)
if request.user.is_authenticated:
return None
else:
return HttpResponseRedirect(reverse(login))
def somePage(request)
needs_login = checkLogin(request) #kicks the user out if not login
if needs_login:
return needs_login
#do other things here if not kick out
唯一的例外是当您想要返回404时。您可以引发404异常,该异常将冒泡进入视图
def checkLogin(request)
if not request.user.is_authenticated:
raise Http404
def somePage(request)
checkLogin(request) #kicks the user out if not login
#do other things here if not kick out
对于您的用例,您可以使用登录所需的装饰器
但是,通常只有view函数的返回值作为HttpResponse返回,您可以执行以下操作:
def checkLogin(request)
if request.user.is_authenticated:
return None
else:
return HttpResponseRedirect(reverse(login))
def somePage(request)
needs_login = checkLogin(request) #kicks the user out if not login
if needs_login:
return needs_login
#do other things here if not kick out
唯一的例外是当您想要返回404时。您可以引发404异常,该异常将冒泡进入视图
def checkLogin(request)
if not request.user.is_authenticated:
raise Http404
def somePage(request)
checkLogin(request) #kicks the user out if not login
#do other things here if not kick out
非常感谢你的解释。非常感谢你的解释。非常感谢你的解释。非常感谢你的解释。非常感谢你的解释。