django next url无法正常工作

时间:2017-04-17 10:43:09

标签: python django next

我使用默认的django(1.9.5)auth_view创建了一个登录页面,urls.py看起来像这样

url(r'^login/$', auth_views.login, {"template_name": 'login.html'}, name='login'),

并使用django指定的html生成表单,html看起来像这样

<form method="post" action="{% url 'login' %}?next={{next}}">
                {% csrf_token %}
                <table class="login-form">
                <tr>
                    <td class="input-label">{{ form.username.label_tag }}</td>
                    <td class="input-field"><input class="form-control" id="{{ form.username.id_for_label }}" maxlength="30" name="{{ form.username.html_name }}" type="text" /> 
                    </td>
                </tr>
                <tr>
                    <td class="input-label">{{ form.password.label_tag }}</td>
                    <td class="input-field"><input class="form-control" id="{{ form.password.id_for_label }}" maxlength="30" name="{{ form.password.html_name }}" type="password" /> 
                    </td>
                </tr>
                </table>
                {# Assumes you setup the password_reset view in your URLconf #}
                <p class="pull-left"><a href="{% url 'password_reset' %}">Forgot password?</a></p>
                <button type="submit" class="btn btn-default pull-right"/>
                    Sign in <span class="fa fa-arrow-circle-right"></span>
                </button>
                <input type="hidden" name="next" value="{{ next }}"/>
            </form>

现在,如果有任何用户尝试访问像/ admin这样的页面并且用户未经过身份验证,则会将用户重定向到/ login,并且在成功登录后,应根据用户请求将其重定向到/ admin。但我登陆/ login / admin而不是。我哪里错了,

感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

不要在操作中查询用户参数,而是将您的操作设置为

格式
action="{% url 'login' %}"

并且您已经在代码中使用<input type="hidden" name="next" value="{{ next }}"/>来处理网址的next

答案 1 :(得分:-1)

解:    我找到了为什么它不起作用,在我的中间件中我正在做lstrip('/'),它在管理员之前删除/。这意味着当我尝试登录时,网址将显示为http://localhost:8000/login?/next=admin/而不是。{ http://localhost:8000/login/?next=/admin/