2

我正在尝试使用此代码通过 urls.py 文件将“下一个”字段传递给我的 login.html 模板

这工作正常:

urls((r'^login/$', 'django.contrib.auth.views.login',
    {'template_name': 'myapp/login.html'}),

但我不希望登录后重定向到“/accounts/profile/”页面,我想转到站点根目录“/”。

url(r'^login/$', 'django.contrib.auth.views.login',
    {'template_name': 'login.html', 'next':'/'}),

但我明白了

login() got an unexpected keyword argument 'next'

不确定如何通过 urls 函数传递“下一个”参数,并且似乎找不到其他解决方案,有什么建议吗?

4

5 回答 5

8

我能够做到这一点,

url(r'^login/$', 'django.contrib.auth.views.login',
    {'template_name': 'login.html', 'extra_context': {'next':'/'}}),
于 2013-08-07T14:29:25.857 回答
8

因此,您可以通过在 settings.py 中设置 LOGIN_REDIRECT_URL 来设置登录后的默认 url: https ://docs.djangoproject.com/en/dev/ref/settings/#login-redirect-url

它的默认值是/accounts/profile/,这就是它重定向到那里的原因!

# settings.py
LOGIN_REDIRECT_URL = '/'
于 2013-08-07T14:31:24.803 回答
4

您应该能够next作为查询字符串参数而不是命名变量传递给视图:

url(r'^login/?next=/$', 'django.contrib.auth.views.login',
    {'template_name': 'login.html'}),
于 2013-08-07T14:26:58.177 回答
3

next参数应该在请求GET的数据中或数据中。POST在您的 urls.py 中,您只能将额外参数传递给视图函数本身,而不能传递给GETorPOST数据。

您应该做的是更改登录模板中的表单以将next参数包含在表单操作中或将其作为隐藏字段包含在表单中:

<form action="<url>?next=/" method="POST"> etc.

或者:

<form action="<url>" method="POST">
    <input type="hidden" name="next" value="/" />
    etc.

那,或者 Temuz 的答案可能就足够了,只需将默认设置LOGIN_REDIRECT_URL'/'.

于 2013-08-07T15:12:51.290 回答
0

设置.py

LOGIN_REDIRECT_URL ='home'

我为我的重定向选择了“根/路径”,你也可以指定你的

于 2017-06-28T13:04:06.890 回答