在被调用视图中使用导入函数进行重定向

问题描述 投票:0回答:1

我有一个 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 函数放置在我拥有的每个视图中并重定向访问者。但我也想在特殊情况下进行此检查,例如其他参数不合适。

django redirect view
1个回答
0
投票

你可以使用装饰器来代替,但是你在这里所做的已经存在:那就是

@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')
© www.soinside.com 2019 - 2024. All rights reserved.