1

我正在尝试使用 django 模板for循环生成导航表。href 目标包含一个 django 变量。django模板是jade格式写的。

如果我在 django 模板中使用 HTML 格式,我会使用:

<a href="#{{group.name}}"> {{group.name}} </a>

但我找不到使用翡翠格式的正确语法。

我所拥有的是:

table.generic
  tbody
    tr
      th Jump to a Group
    {% for group in groups %}
    tr
      td
        a(href!='#{{group.name}}') {{group.name}}
    {% endfor %}

但是锚在 HTML 中呈现为:

<a +{group.name.__str__()+'}'="" href="">Registration</a>

“注册”是 group.name 的值。

删除!导致 django 渲染错误的原因。

我试图插入一个反斜杠: a(href!='#\{{group.name}}') {{group.name}},但这会将反斜杠完整呈现为:

<a href="#\Registration">Registration</a>

建议?

编辑:作为一个糟糕的解决方法,我添加了一个“磅”方法来返回带有#前缀的组名:

def pound(self): 
    return unicode("#" + self.name)

现在我可以在翡翠模板中引用{{group.pound}}:

a(href!='{{group.pound}}') {{group.name}}

也许更好的方法名称是 group.name_as_id_tag ....


已解决:将 django 模板变量格式化为玉变量

根据@user1737909 的最后建议,我将建议扩展为尝试:

a(href='##{group.name}') {{group.name}}

关键是将双卷曲 django 变量格式化{{}}为 pound-single-curly Jade 变量#{}。不要!在符号之前包含=符号,这样变量就会由翡翠评估,这将插入它从 django 获得的值。

我希望我能找到一个指向编码风格参考页面的链接以包含在此处。但如果我有一个,我一开始就不会问这个问题。

4

1 回答 1

3

根据@user1737909 的最后建议,我将建议扩展为尝试:

a(href='##{group.name}') {{group.name}}

关键是将双卷曲 django 变量格式化{{}}为 pound-single-curly Jade 变量#{}。不要!在符号之前包含=符号,这样变量就会由翡翠评估,这将插入它从 django 获得的值。

OP 已更新以反映此解决方案。

于 2013-04-04T09:41:29.787 回答