django - TemplateSyntaxError at / 第 57 行的块标记无效:'logout_url',预期为 'endif'。您是否忘记注册或加载此标签?
问题描述
我正在 Django 3.1.4 中构建一个应用程序。
我不明白为什么我会得到
TemplateSyntaxError at /
Invalid block tag on line 57: 'logout_url', expected 'endif'. Did you forget to register or load this tag?
突出显示这一行:
<a class="nav-link" href="{% logout_url %}">Logout</a>
这是我的代码,
在我的 urls.py 中:
urlpatterns = [
path("logout/", LogoutView.as_view(), name="logout"),
]
在我的模板中:
{% url 'logout' as logout_url %}
{% if not request.user.is_authenticated %}
<li class="nav-item {% if request.path == login_url %}active{% endif %}">
<a class="nav-link" href="{% url 'login' %}">Login</a>
</li>
<li class="nav-item {% if request.path == register_url %}active{% endif %}">
<a class="nav-link" href="{% url 'register' %}">Register</a>
</li>
{% else %}
<li class="nav-item {% if request.path == admin_url %}active{% endif %}">
<a class="nav-link" href="{% url 'admin:index' %}">Admin</a>
</li>
<li class="nav-item {% if request.path == logout_url %}active{% endif %}"></li>
<a class="nav-link" href="{% logout_url %}">Logout</a>
<!-- logout_url -->
</li>
{% endif %}
如果我只是替换部分,它工作正常:
<li class="nav-item {% if request.path == logout_url %}active{% endif %}"></li>
<a class="nav-link" href="{% logout_url %}">Logout</a>
</li>
和:
<li class="nav-item {% if request.path == logout_url %}active{% endif %}"></li>
<a class="nav-link" href="{% url 'logout' %}">Logout</a>
</li>
但我不明白为什么...
就像线
{% url 'logout' as logout_url %}
根本不工作,
而且更多,django 期望{% endif %}
.
那么这是否意味着代码在某个点发生故障并且无法读取{% endif %}
标签?
谁能解释我发生了什么?
解决方案
解决了
我正在使用 django 自定义“函数、循环、条件、ecc”。标记语法({% %}
)而不是 django 变量标记语法({{ }}
)。
我不得不替换
<a class="nav-link" href="{% logout_url %}">Logout</a>
和:
<a class="nav-link" href="{{ logout_url }}">Logout</a>
推荐阅读
- python - 操作 os.path
- python - python string.split() 和循环
- python - 如何在循环中计时代码的执行?
- macos - 如何在 Windows 上使用 VS 创建 MacOS 控制台应用程序
- pandas - pandas 1.0 用 NAN 替换一个字符串 dtype 列
- docker - 每次请求都拒绝 DigitalOcean 液滴连接
- html - 如何拉伸 YouTube 嵌入视频?
- vue.js - 在 Vue.js 中导入文本
- tensorflow - 无法使用 Tensorflow.js predict() 函数
- node.js - 使用 OneSignal Nodejs 发送通知