python - 可以在 Django 模板的下面代码中添加斜杠吗?
问题描述
我正在尝试解决一个问题。在这个过程中,我得到了这个问题。
{% if request.path == '/{{sub_cat.sub_cat_parent.cat_slug}}/{{sub_cat.sub_cat_slug}}/' %}
<div class="alert-secondary">Active</div>
{% else %}
如何在此处正确包含斜杠'/{{sub_cat.sub_cat_parent.cat_slug}}/{{sub_cat.sub_cat_slug}}/'
?可以{{
在{%
模板标签中使用吗?我在这里做错了什么?
解决方案
在模板标签参数中确实不支持“变量替换”({{ somevar }}
)语法 - 如果您认为在模板呈现的上下文中,这种语法将等效于“打印”语句,这是有道理的。
这并不意味着您不能将上下文变量传递给模板标签 - 否则模板标签的用途将非常有限 - 但您只需提及它们即可这样做,即假设您有一个名为“路径”的上下文变量,您可以在这里使用它作为
{% if request.path==path %}
...
您也可以在此处使用过滤器表达式,即这也是有效的:
{% if request.path==path|lower %}
(假设模板标签的作者正确处理了标签参数 - 我让您参考文档以获取更多信息)。
现在在这里写/您的问题,您当然可以使用自定义过滤器来连接不同的部分,但这实际上是一个非常糟糕的主意。Django 的 url 处理基于这样的想法,即您实际上永远不应该在任何地方对 url 进行硬编码——您在文件中定义和命名url urls.py
,然后使用内置函数 ( django.core.urlresolvers.reverse()
) / templatetags ( {% url %}
) 生成它们。
在这里,正确的解决方案是在您的对象上定义一个get_absolute_url()
方法,该方法sub_cat
返回该对象的正确 url(实际上是它的路径部分),并在模板中对其进行测试。
就我而言,我什至会使用第二个间接级别作为模板过滤器,因此 1/ 您的模型(或其他模型sub_cat
)知道它自己的 url,并且 2/ 模板过滤器可以判断给定sub_cat
是否“活跃” " 对于当前request.path
,因此如果定义 sub_cat 何时“活动”的规范要更改,您将只需要更改模板过滤器功能,而不必浏览所有模板(可能会在途中遗漏一些东西)。
推荐阅读
- sql - 查询多表多字段时的SQL GROUP BY
- reactjs - react-admin 确认对话框是否接受两个以上的选择选项?我希望我的对话框包含“是”、“取消”、“否”选项
- python - 为什么ReferenceField不会在python中自动取消引用
- python-3.x - Python Django 电子邮件
- git - 如何恢复/恢复从未推送到 GitHub 存储库的文件?
- sql - 访问:用户输入年份查询该会计年度的日期
- firewall - Sonic Firewall NSA 3600 portshield 开关问题
- javascript - 将 npm 模块导入 Google Chrome 扩展内容脚本
- grails - Grails如何使用标准按儿童最大日期对列表进行排序
- state - 是否有记录的方法来获取 Kafka Stream 的所有状态存储?