我正在使用django-registration
。在使用它之后,我继续使用Bootstrap扩展视图和表单以进行字段定制。
除了退出页面之外,我还可以使用它。在默认方法中,我只是简单地构建了表单,它运行正常。但是当试图使用Django的表单时,它根本没有显示字段。登录和注销模板都使用以下基本形式:
<div class="auth-form">
<form class="form-signin" method="post" action="/accounts/login/">
{% csrf_token %}
<h2 class="form-signin-heading">Please log in</h2>
<div class="font-16px top-mar-1em">
<label for="id_username"></label>
{{ form.username }}
<label for="id_password1"></label>
{{ form.password }}
<div class="form-group">
<div class="col-sm-10">
<div class="level-checkbox">
<label for="checkbox">
{{ form.remember_me }} Remember me
</label>
</div>
</div>
</div>
<button class="btn btn-primary" type="submit">Log in</button>
</div>
</form>
</div>
这适用于登录页面,但对于注销页面它没有(字段丢失)。这就像表单不适用于此页面。我敢肯定我错过了一些简单但我无法理解的东西。
我的urls.py
部分如下所示:
url(r'^accounts/login/$','django.contrib.auth.views.login', {
'template_name': 'registration/login.html',
'authentication_form': UserAuthenticationForm,
}),
我尝试向urls.py
添加退出部分,类似于登录部分,但这没有用。我尝试使用logout_then_login
,使用login.html
作为logout.html
上的导入模板以及其他杂项无效。
显然,没有与默认注销视图关联的表单,所以这可能是问题,但我不确定在注销视图中实现标准表单的最佳方法。
答案 0 :(得分:1)
您应该能够将以下内容添加到urls.py
,并使一切正常。
url(r'^accounts/logout/$','django.contrib.auth.views.logout_then_login')
确保LOGIN_URL
定义了settings.py
。然后,当用户单击注销链接时,他们将点击注销视图,该视图负责重定向到包含您的表单的登录视图。
答案 1 :(得分:0)
感谢@tsurantino,我能够使用消息框架实现这一点。我总是喜欢当我必须使用之前没有使用的Django的一部分来实现新功能时。可以这么说,添加到工具包中。这是我做的:
由于我已经根据用户注册/激活发送了一个signal_connectors.py
文件,我刚刚添加了它:
@receiver(user_logged_out)
def user_logged_out_message(sender, request, **kwargs):
messages.add_message(
request,
messages.INFO,
'You\'ve been successfully logged out. You can log in again below.'
)
然后在我的common
应用__init__.py
我导入了它:
from common.signal_connectors import user_logged_out_message
然后在我的login.html
模板中:
{% if messages %}
<div class="alert-success align-ctr font-16px top-mar-2em">
{% for message in messages %}
{{ message }}
{% endfor %}
</div>
{% endif %}
最后,要在注销后重定向到登录页面(urls.py
):
url(r'^accounts/logout/$','django.contrib.auth.views.logout_then_login'),
感谢大家的帮助和评论。