Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
django中的登录\重定向\ URL_Django_Login Required - Fatal编程技术网

django中的登录\重定向\ URL

django中的登录\重定向\ URL,django,login-required,Django,Login Required,我对Django很陌生,我已经快结束了。我在视图中的我的帖子详细信息上方添加了@login\u required,用于单击特定帖子,并添加了login.html模板。因此,当我点击一个帖子标题时,我被重定向到我的登录页面,很好,url是:在我的计算机atm上尝试这个 然后我输入我的管理员姓名/密码,然后自动重定向到404,当然会得到一个找不到的页面,因为我没有这个url/视图/模板。我想当,我只是想被重定向到/post/11/ 查看堆栈溢出并发现以下问题: 听起来不错 并且得到了答案 在sett

我对Django很陌生,我已经快结束了。我在视图中的我的帖子详细信息上方添加了@login\u required,用于单击特定帖子,并添加了login.html模板。因此,当我点击一个帖子标题时,我被重定向到我的登录页面,很好,url是:在我的计算机atm上尝试这个

然后我输入我的管理员姓名/密码,然后自动重定向到404,当然会得到一个找不到的页面,因为我没有这个url/视图/模板。我想当,我只是想被重定向到/post/11/

查看堆栈溢出并发现以下问题: 听起来不错 并且得到了答案

在settings.py中更改LOGIN\u REDIRECT\u URL的值

因此,我在Django文档中查找了LOGIN_REDIRECT_URL:

默认值:'/accounts/profile/'

当contrib.auth.login视图未获取下一个参数时,登录后重定向请求的URL

例如,这是由登录所需的装饰程序使用的

此设置还接受命名URL模式,该模式可用于减少配置重复,因为您不必在“设置”和“URL配置”两个位置定义URL

自1.8版以来已弃用:该设置也可能是视图函数的点式Python路径。Django 1.10将删除对此的支持

但是我的contrib.auth.login不是获得下一个参数吗?看看我的url,上面写着?next=/post/11/最后请帮我一把,我不知道这里会有什么问题:

您可以在以下位置查看该页面: 源代码位于:

更新1: 所以我现在知道LOGIN_REDIRECT_URL决定了我下一步的位置,这意味着它忽略了URL中的下一个参数。我在谷歌上进一步搜索了这个问题,发现它与我的问题非常相似

文档说明我需要使用下一个参数和上下文处理器。我的模板中有{next}},但我对如何实际传递/gallery/username感到困惑。任何帮助都将不胜感激

我的模板中甚至没有{{next}},我应该在哪里/如何添加它

这个问题的首选答案似乎是:

Django的登录视图Django.contrib.auth.views.login接受名为extra_context的字典。字典中的值直接传递给模板。所以你可以用它来设置下一个参数。完成后,可以使用名称next和值{{next}}设置一个隐藏字段,以便在模板中呈现它

但我不知道该如何解释这一点。在写这篇编辑文章时,我得到了kacperd对这篇文章的回答,现在我将通读一遍。问题是contrib.auth.login没有得到下一个参数。 当您尝试在没有凭据的情况下获取login_required视图时,您的请求将重定向到login视图,并呈现您创建的模板。此视图中存在下一个参数,但当您执行提交表单的登录操作时,您的请求中没有包含下一个参数,因此contrib.auth.login无法获取该参数并重定向到默认页面

问题的解决方案是包含下一个参数并将其转发。您可以通过修改登录模板来完成此操作。只需添加?next={{request.GET.next}}即可形成action属性

<form method="post" action="{% url 'django.contrib.auth.views.login' %}?next={{ request.GET.next }}">
问题是contrib.auth.login无法获取下一个参数。 当您尝试在没有凭据的情况下获取login_required视图时,您的请求将重定向到login视图,并呈现您创建的模板。此视图中存在下一个参数,但当您执行提交表单的登录操作时,您的请求中没有包含下一个参数,因此contrib.auth.login无法获取该参数并重定向到默认页面

问题的解决方案是包含下一个参数并将其转发。您可以通过修改登录模板来完成此操作。只需添加?next={{request.GET.next}}即可形成action属性

<form method="post" action="{% url 'django.contrib.auth.views.login' %}?next={{ request.GET.next }}">

谢谢谢谢谢谢!!现在一切都有了意义:谢谢谢谢谢谢!现在一切都有了意义: