我正在尝试进入页面,而我没有登录,应用程序将我重定向到登录页面并获取下一个参数正在运行(例如
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>
1 回答
问题是您已将
next
变量硬编码为模板中的/
:您应该将其更改为使用
{{ next }}
: