如何重定向Django模板并使用“Next”变量?

2024-04-25 01:08:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用的是Django的内置登录视图,可以在以下片段中看到:

网址.py

    url(r'^login$',login,{'template_name': 'login.html'},name="login"),

模板.html

^{pr2}$

如何使用下一个变量重定向到与django重定向到的默认/accounts/profile/不同的URL?我知道有人说设置.py但是我想知道如何利用下一个变量来完成这个任务?在

(即使在参考了文档之后,我也不确定下一个变量是如何工作的,如能对此作出解释,我将不胜感激)


Tags: djangonamepy视图模板urlhtmllogin
1条回答
网友
1楼 · 发布于 2024-04-25 01:08:50

如果您使用的是django登录视图ie

from django.contrib.auth.views import login

您只需要将下一个url传递给模板。因此,当请求被发送到login视图时,代码就可以重定向到该url。没有找到下一个url

^{pr2}$

你可以简单地传递下一个网址,就像

<form method="post" action="{% url 'login' %}?next={{next_url}}">

通过上下文传递“next_url”值。在

下一种情况下,如果您需要任何自定义视图的下一个url重定向,只需在视图中编写一个代码来获取下一个url,在视图中完成该工作后,您可以重定向到下一个url。在

from django.utils.http import is_safe_url

def your_view(request):
    # do your codes
    redirect_to = request.GET.get(next, '') # use get or Post as per your requirement 
    if is_safe_url(url=redirect_to, host=request.get_host()):
        HttpResponseRedirect(redirect_to)
    else:
        # your response

为了澄清您对下一个变量如何工作的疑问:在上面的视图中,我们得到了一个geta http请求,以及我们是否已将下一个url作为查询参数传递。我们会看到它的。”请求、获取、获取(下一个,'')“将获取您从视图发送的下一个url。从视图级别,您可以执行所需的功能,然后,如果下一个url存在且有效,则可以使用HttpResponseRedirect重定向到下一个url。在

登录参考号:Django: Redirect to previous page after login

相关问题 更多 >