我有一个 Django 应用程序“A”,带有视图“view_A”,我在其中执行一个函数:
from app_B.views import usercheck_B
def view_A(request):
function_B(request)
return render(request)
在我的 Django 应用程序“B”中,具有函数“usercheck_B”:
def usercheck_B(request):
if not request.user.is_authenticated:
redirect('view_B:login')
我想要的是,如果客户端没有登录到被调用的函数,则直接重定向客户端。但这是行不通的。我只能将 Httpresponse 返回到我的第一个调用的视图“view_A”,重定向到登录。
我的想法是将 usercheck_B 函数放置在我拥有的每个视图中并重定向访问者。但我也想在特殊情况下进行此检查,例如其他参数不合适。
@login_required
装饰器[Django-doc]。事实上,您可以使用:
from django.contrib.auth.decorators import login_required
@login_required
def view_A(request):
return render(request, 'some-template.html')
LOGIN_URL
设置中设置登录网址[Django-doc]:
# settings.py
from django.urls import reverse_lazy
# …
LOGIN_URL = reverse_lazy('view_B:login')