如何在Django上的整个站点上提供登录表单

Bas*_*ian 3 django login

我正在使用Django注册来管理注册和登录/注销以及Django的auth系统.它工作正常,我有一个基本模板,我在其中放置了一个"登录"链接,将用户带到另一个页面进行登录.我想用实际的登录表单(用户名/密码)替换此链接,以便表单直接显示在每个页面中.有什么建议?

And*_*ron 5

您可以使用包含模板标记来构建如下所示的自定义标记:

{% login_form %}
Run Code Online (Sandbox Code Playgroud)

您可能希望传递此标记,request.get_absolute_uri以便它可以?next={{ request.get_absolute_uri }}在登录视图的参数中使用它,以便用户可以在登录后重定向到当前页面.

这样,您可以将登录表单放在任何模板中,而不违反DRY原则.您甚至可以使用以下内容将其嵌入基本模板中:

{% if not user.is_authenticated %}
  {% login_form %}
{% else %}
  {# display welcome message. #}
{% endif %}
Run Code Online (Sandbox Code Playgroud)