将 Django 模板与用户身份验证结合使用
Using Django Templates with User Authentication
我有一个网站,我正在使用用户身份验证来限制访问。
我正在使用 django-allauth
来处理社交媒体身份验证,但只想限制对 staff
帐户的访问(在 django 管理面板中设置)。
我想将模板用作 header(bootstrap、导航栏等),然后加载主要内容,或要求用户登录或请求验证的消息由管理员。
我的 header 模板文件:inventory/header.html
<body>
{% load bootstrap3 %}
{% if user.is_authenticated %}
{% if user.is_staff%}
{% block main %}{% endblock %}
{% block scripts %}{% endblock %}
{% else %}
<h1>Please ask an administrator to activate your account</h1>
{% endif %}
{% else %}
<h1>Please login to see this page</h1>
{% endif %}
</body>
视图调用的另一个模板:inventory/home.html
{% include "inventory/header.html" %}
{% block main %}
This is the home page.
{% endblock %}
观点:
def home(request):
return render(request,'inventory/home.html')
每当我调用视图时,无论用户是登录还是工作人员,main
块总是显示。其他错误信息显示正确。
我试图避免将 is_authenticated/is_staff
插入到我的所有模板中。我也考虑过使用 login_required
视图装饰器,但这并没有解决我的 is_staff
问题。
原来我应该用
{% extends "inventory/header.html" %}
而不是
{% include "inventory/header.html" %}
哎呀!
我有一个网站,我正在使用用户身份验证来限制访问。
我正在使用 django-allauth
来处理社交媒体身份验证,但只想限制对 staff
帐户的访问(在 django 管理面板中设置)。
我想将模板用作 header(bootstrap、导航栏等),然后加载主要内容,或要求用户登录或请求验证的消息由管理员。
我的 header 模板文件:inventory/header.html
<body>
{% load bootstrap3 %}
{% if user.is_authenticated %}
{% if user.is_staff%}
{% block main %}{% endblock %}
{% block scripts %}{% endblock %}
{% else %}
<h1>Please ask an administrator to activate your account</h1>
{% endif %}
{% else %}
<h1>Please login to see this page</h1>
{% endif %}
</body>
视图调用的另一个模板:inventory/home.html
{% include "inventory/header.html" %}
{% block main %}
This is the home page.
{% endblock %}
观点:
def home(request):
return render(request,'inventory/home.html')
每当我调用视图时,无论用户是登录还是工作人员,main
块总是显示。其他错误信息显示正确。
我试图避免将 is_authenticated/is_staff
插入到我的所有模板中。我也考虑过使用 login_required
视图装饰器,但这并没有解决我的 is_staff
问题。
原来我应该用
{% extends "inventory/header.html" %}
而不是
{% include "inventory/header.html" %}
哎呀!