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 }}" />
我在未登录的情况下尝试进入该页面,应用将我重定向到登录页面并且正在获取下一个参数(例如
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 }}" />