django - 为什么 Django 会出现此错误:第 3 行的块标记无效:'else'
问题描述
我有以下 Django 模板:
{% if request.is_ajax %}
{% extends "ajax.html" %}
{% else %}
{% extends "base.html" %}
{% endif %}
当我渲染它时,我收到以下错误:
Invalid block tag on line 3: 'else'. Did you forget to register or load this tag?
为什么我会收到此错误?
解决方案
{% extends %}
如果您要使用它,标签必须是模板中的第一行。否则是无效的语法。但是,您可以使用变量。我会做以下事情:
def my_view(request):
if request.is_ajax():
base_template = "ajax.html"
else:
base_template = "base.html"
...
context["base_template"] = base_template
return render(request, "template.html", context)
然后在你的模板中
{% extends base_template %}
...
如果您不想将该逻辑添加到视图中,另一种方法是执行以下操作:
{% extends request.is_ajax|yesno:"ajax.html,base.html" %}
...
推荐阅读
- html - 选中复选框时如何将标签更改为更粗体?
- swift - 在 FBSDK 的设置类中找不到 setAdvertiserTrackingEnabled?
- java - 如何在具有自动保存功能的网站上设计 api 端点?
- ruby-on-rails - 使用 BUNDLE_FROZEN
- git - 隔离的“语义发布”docker 容器可以工作,但在 GitLab CI 中需要 40 分钟
- android - Firebase 没有从孩子那里提取信息
- reactjs - 如何将后端(嵌套)文件中的 multer 图像放到我的前端(反应)上?
- java - java为数据类创建时间范围属性
- powershell - 管道元素 Powershell 中的“,”后缺少表达式
- python - Pip 安装了我想使用的模块,但仍然出现“找不到模块”错误