Django next 使用默认视图重定向

Django next redirect with default view

我在未登录的情况下尝试进入该页面,应用将我重定向到登录页面并且正在获取下一个参数(例如

localhost:8000/login/?next=/blog/add/

但是当我输入登录名和密码并单击登录按钮时,它会将我重定向到主页,而不是下一个参数中的那个

localhost:8000, not localhost:8000/blog/add/

我正在使用默认的 Django 登录视图,因此可以在不更改登录视图中的任何内容的情况下执行此操作?

一切都是django默认的,我在重定向到登录页面时只添加了下一个参数(使用@login_required(login_url='login')),我听说Django有内置功能,用于在使用下一个参数登录后进行重定向,不需要更多?

urls.py

url(r'^login/$',
        django.contrib.auth.views.login,
        {
            'template_name': 'user/login.html',
            'authentication_form': user.forms.BootstrapAuthenticationForm,
            'extra_context':
            {
                'title': 'Logowanie',
                'year': datetime.now().year,
            }
        },
        name='login'),

login.html

<form action="" method="post" class="form-horizontal">
                {% csrf_token %}
                <h4>Uzyj konta LDAP zeby sie zalogowac</h4>
                <hr />
                <div class="form-group">
                    <div class="col-md-10">
                        {{ form.username }}
                    </div>
                </div>
                <div class="form-group">
                    <div class="col-md-10">
                        {{ form.password }}
                    </div>
                </div>
                <div class="form-group">
                    <div class="col-md-10">
                        <input type="hidden" name="next" value="/" />
                        <input type="submit" value="Zaloguj" class="btn btn-primary btn-block btn-pb" />
                    </div>
                </div>
                {% if form.errors %}
                <p class="validation-summary-errors">Please enter a correct user name and password.</p>
                {% endif %}
            </form>

问题是您在模板中将 next 变量硬编码为 /

<input type="hidden" name="next" value="/" />

您应该将其更改为使用 {{ next }}:

<input type="hidden" name="next" value="{{ next }}" />