基于用户身份验证的Django变更基础模板
我有两个基本模板:base.html和base_visitor.html。如果用户经过身份验证,则扩展base.html;如果用户未经过身份验证,则扩展base\u vistior.html。我已经试过了:基于用户身份验证的Django变更基础模板,django,authentication,django-templates,Django,Authentication,Django Templates,我有两个基本模板:base.html和base_visitor.html。如果用户经过身份验证,则扩展base.html;如果用户未经过身份验证,则扩展base\u vistior.html。我已经试过了: {% if user.is_authenticated %} {% extends 'base.html' %} {% else %} {% extends 'base_visitor.html' %} {% endif %} {% block title %}{{ title }
{% if user.is_authenticated %}
{% extends 'base.html' %}
{% else %}
{% extends 'base_visitor.html' %}
{% endif %}
{% block title %}{{ title }}{% endblock %}
{% block body %}
<h1>Title</h1>
{% if models %}
{% for model in models %}
<h2>{{ model.model_number }}<h2>
{% endfor %}
{% else %}
<h3>NO models</h3>
{% endif %}
{% endblock %}
{%if user.u经过身份验证%}
{%extends'base.html%}
{%else%}
{%extends'base_visitor.html%}
{%endif%}
{%block title%}{{title}{%endblock%}
{%block body%}
标题
{%if模型%}
{%用于模型中的模型%}
{{model.model_number}
{%endfor%}
{%else%}
没有模型
{%endif%}
{%endblock%}
但由于某种原因,这给了我一个错误:“第3行的块标记无效:'else'。您忘记注册或加载这个标记了吗?”
谢谢你的帮助 如果/
否则
块中不能放置扩展
标记
但是,您可以为模板参数使用变量,例如:
{% extends base_template_name %}
如果您希望在全球范围内应用此机制,定义此类变量的最佳位置是,例如:
def基本模板名称上下文处理器(请求):
#如果使用Django<2.0,则使用request.user.is_authenticated()
如果request.user.u经过身份验证:
base\u template\u name='base.html'
其他:
base\u template\u name='base\u visitor.html'
返回{
“基本模板名称”:基本模板名称,
}
若要将此上下文处理器插入模板引擎,请检查。如果
/否则块,则不能将扩展
标记放入
但是,您可以为模板参数使用变量,例如:
{% extends base_template_name %}
如果您希望在全球范围内应用此机制,定义此类变量的最佳位置是,例如:
def基本模板名称上下文处理器(请求):
#如果使用Django<2.0,则使用request.user.is_authenticated()
如果request.user.u经过身份验证:
base\u template\u name='base.html'
其他:
base\u template\u name='base\u visitor.html'
返回{
“基本模板名称”:基本模板名称,
}
要将此上下文处理器插入模板引擎,请检查。太棒了!伟大的想法在我意识到request.user.is\u authenticated
是一个属性而不是一个方法之前,不会被一个错误所使用,因此之后不应该有括号。@wjakobw是的,他们在Django 2.0中更改了这一点,这太棒了!伟大的思想在我意识到request.user.is\u authenticated
是一个属性而不是一个方法之前,不会被一个错误所使用,因此之后不应该有括号。@wjakobw是的,他们在Django 2.0中更改了这一点