10

我去我的网页http://localhost:8000/listings/post/,它没有通过测试

@user_passes_test(lambda u: u.is_authenticated() and u.get_profile().shipper)

正如预期的那样,并将我重定向到http://localhost:8000/login/?next=/listings/post/应有的状态,但是当我再次登录时,它不会像应有的那样将我重定向回该页面。它需要我/accounts/profile/。我没有redirect_field_name在任何地方定义,所以它应该寻找默认next变量。相关urls.py位看起来像这样

url(r'^login/$', 'django.contrib.auth.views.login', name='login'),

那么造成这种情况的可能原因是什么?

4

2 回答 2

16

需要添加

<input type="hidden" name="next" value="{{ next }}" />

到我的登录表单。它在没有next令牌的情况下发回登录 URL,然后尝试重定向

于 2010-02-15T05:38:33.210 回答
4

它将您重定向到设置变量LOGIN_REDIRECT_URL

当满足以下条件时会发生这种情况:

if not redirect_to or '//' in redirect_to or ' ' in redirect_to:
                redirect_to = settings.LOGIN_REDIRECT_URL

很可能您的“下一个”变量为空或包含垃圾。

于 2010-02-15T00:09:06.937 回答