【问题标题】:What is the proper syntax for using a django template variable as a jade href id reference?使用 django 模板变量作为翡翠 href id 参考的正确语法是什么?
【发布时间】:2013-04-02 04:10:53
【问题描述】:

我正在尝试使用 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双卷曲变量{{}}格式化为磅单卷曲玉变量#{}。不要在= 符号之前包含!,因此变量由jade评估的,它将插入它从django获得的值。

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

【问题讨论】:

  • 您使用 django 渲染到玉模板的任何特殊原因?
  • 撇开当前的语法问题不谈,我发现格式更快、更清晰,不必关注&lt;&gt; 和结束标签。
  • 你试过pyjade吗?
  • 对于#的问题,jade认为是interp,你可以试试'#'+'{{foo}}'(或者#\{{abc}
  • @user1737909:我正在使用 pyjade-1.6-py2.7。此外,似乎插入+ 或反斜杠或任何字符会产生#+Registration#\Registration#charRegistration

标签: django pug


【解决方案1】:

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

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

关键是将django双卷曲变量{{}}格式化为磅单卷曲玉变量#{}。不要在= 符号之前包含!,以便变量由jade 评估,这将插入它从django 获得的值。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-09
    • 1970-01-01
    • 2012-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-25
    • 2013-05-19
    相关资源
    最近更新 更多