【问题标题】:Django - check if user is authenticated for every urlDjango - 检查用户是否对每个 url 进行了身份验证
【发布时间】:2018-09-12 23:28:29
【问题描述】:

在我的 html 中,我可以使用以下语法检查用户是否已登录:

{% if user.is_authenticated %}
  <div id="display_something">...</div>
{% else %}
  <p>Please Log in</p>
{% endif %}

但是,如果我想检查用户是否对我正在呈现的每个 html 文件进行了身份验证,我该怎么办?我是否必须为每个 html 文件复制并粘贴 {% if ... %} 块? Django 处理这个问题的方式是什么?有什么好的做法?

【问题讨论】:

标签: django django-authentication django-users


【解决方案1】:

在您的base.html 中添加您的支票

{% if user.is_authenticated %}
  {% block page %}
  {% endblock %}
{% else %}
  <p>Please Log in</p>
{% endif %}

然后在所有其他页面的顶部添加{% extends 'base.html' %}。您需要给它一个指向base.html 的相对链接。 然后该页面上的其余代码需要位于如下标记之间。

{% block page %}
<!-- all your html code here -->
{% endblock %}

注意block之后,你需要有相同的名字。对于这个例子,它是page,但你可以选择你自己的变量名。

【讨论】:

    【解决方案2】:

    您不应该在模板中处理身份验证逻辑(针对整个网站),而是可以在您的视图上使用login_required decorator

    from django.contrib.auth.decorators import login_required
    
    @login_required
    def my_view(request):
        ...
    

    【讨论】:

      猜你喜欢
      • 2018-04-21
      • 1970-01-01
      • 2018-06-09
      • 1970-01-01
      • 1970-01-01
      • 2017-07-10
      • 2016-05-24
      • 2017-08-04
      • 2015-02-15
      相关资源
      最近更新 更多