问题描述
我需要使用自己的登录模板和django.contrib.auth.login。 我也在尝试实现“记住我”选项,因此我遵循了以下代码段: :
所以我的观点看起来像这样:
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')
当然,其中“ login”是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)
但这看起来糟透了。 有人可以给我更好的解决方案吗?
1楼
尽管这是一篇老文章,但现在我想您已经设法解决了,我想提出一个可能的解决方案。 您可以将模板更改为:
<input type="hidden" name="next" value="{% if request.POST.next %}{{ request.POST.next }}{% else %}{{ request.GET.next }}{% endif %}"/>
我认为这应该可以解决“下一个”页面丢失的问题。