在Django登录后重定向到最初请求的页面

时间:2017-05-04 04:04:45

标签: python django

我是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。这对我很有用。

然而,上面的主题中提出的解决方案涉及更多。我很好奇为什么有必要做这一切。这里缺少什么?

由于

1 个答案:

答案 0 :(得分:0)

尝试更改

<button type="submit">Login</button>

<input type="submit" value="Login" />