Django Logout Page,django-registration logout.html模板表单字段的问题

时间:2013-12-26 17:06:55

标签: django django-registration form-fields

我正在使用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上的导入模板以及其他杂项无效。

显然,没有与默认注销视图关联的表单,所以这可能是问题,但我不确定在注销视图中实现标准表单的最佳方法。

2 个答案:

答案 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'),

感谢大家的帮助和评论。