我需要使用自己的登录模板,使用django.contrib.auth.login。 我也在尝试实施“记住我”选项,因此我按照以下代码段进行了操作:https://djangosnippets.org/snippets/1881/
所以我的观点如下:
def login_with_remember_me(request):
if request.method == 'POST':
if not request.POST.get('remember_me', None):
request.session.set_expiry(0)
return login(request, template_name='domain/login.html')
“登录”当然是django.contrib.auth.views登录视图。
我还需要在登录后将用户重定向到他的上一页,所以在我的表单中我添加了<input type="hidden" name="next" value="{{ next }}" />
如果用户成功登录,则可以正常工作。但如果他无法登录,则刷新下一个参数。在这种情况下如何让我的重定向工作?
//编辑 好的,所以我找到了肮脏的解决方法:
def login_with_remember_me(request, *args, **kwargs):
if request.method == 'POST':
if not request.POST.get('remember_me', None):
request.session.set_expiry(0)
elif request.POST.get('next') is not None:
kwargs['next'] = request.POST['next']
return login(request, template_name='domain/login.html', *args, **kwargs)
但它看起来很糟糕。有人能给我一个更好的解决方案吗?
答案 0 :(得分:0)
虽然这是一篇很老的帖子,但现在我假设你已经成功解决了这个问题,我想说明一个可能的解决方案。您可以将模板更改为:
<input type="hidden" name="next" value="{% if request.POST.next %}{{ request.POST.next }}{% else %}{{ request.GET.next }}{% endif %}"/>
我认为这应该可以解决“下一页”丢失的问题。