我是Django的新手。我需要对登录功能进行编码,以便在登录后重定向到最初请求的URL。我环顾四周,在stackoverflow线程上找到了以下内容。
django redirect after login not working "next" not posting?
我在Django文档中看到以下内容
login_required()执行以下操作:
如果用户未登录,请重定向到settings.LOGIN_URL,传递 查询字符串中的当前绝对路径。例: /帐户/登录/?下一= /轮询/ 3 /.
我还读到django.contrib.auth包的login()方法将next
传递给模板。所以我在我的视图中定义了login()函数(因为我需要一些自定义,所以我不能使用' auth'包中的那个)。
def login(request):
next = request.GET['next']
return render(request, 'user/login.html', {'next': next})
在我的模板中
<form method="post" action="{% url 'user:login_user' %}" >
{% csrf_token %}
<p><label for="id_username">Username:</label> <input autofocus="" id="id_username" maxlength="254" name="username" type="text" required /></p>
<p><label for="id_password">Password:</label> <input id="id_password" name="password" type="password" required /></p>
<input type="hidden" name="next" value="{{next}}" />
<button type="submit">Login</button>
</form>
在我的login_user()函数中,如果我看到next的值存在,我会在用户登录后重定向到该URL。这对我很有用。
然而,上面的主题中提出的解决方案涉及更多。我很好奇为什么有必要做这一切。这里缺少什么?
由于
答案 0 :(得分:0)
尝试更改
<button type="submit">Login</button>
到
<input type="submit" value="Login" />