2014-09-02 247 views
-1

我有这些变量:Django模板 - 格式化字符串

#Int 
user.id 

#Float (e.g. X.YYYY) 
profile.rating 

我需要这些格式像这样(的`是分隔符):

<a href="/user/`user.id`/">`profile.rating`</a> 

我已经试过许多方法来格式化,但没有工作。例如,连接他们:"<a href=\"/user/"|add:user.id|add:"\">"|add:profile.rating|add:"</a>"给了我什么(字面上,什么也没有)。

我怀疑这是因为add:是数一,但转换成数字串要么slugifystringformat:""送给我的,再次,什么

我该怎么做?

请注意:我需要使用过滤器来完成此操作,因为结果将作为参数传递给include。

更新: 基本上,我建立一种模块化的包括。它包括如下所示:

<section> 
... 

    {% if custom_section %} 
    <section id="{{ custom_section_id }}"> 
    {{ custom_section }} 
    </section> 
    {% endif %} 

... 
</section> 

这意味着我不能只是直接包括参数的值,我需要的标记,将去嵌套section内。

+0

你想要什么样的输出?为什么''/ user/{{user.id}} /“'不适合你? – Rohan 2014-09-02 11:47:42

+0

但是,将“包含”作为包含参数的值时,这不是不可能的吗?即'stuff =“/ user/{{user.id}} /”%}'的{%include“XX”? – 2014-09-02 11:49:19

+0

你能详细说明这个_passed作为include_的参数吗 - 你是指'{%include%}'标记吗? – 2014-09-02 11:50:49

回答

1

我设法解决这个问题,这片标记:这里

{% with "<a href="\"/user/" as link_start %} 
    {% with profile.rating|stringformat:".1f" as rating %} 
    {% with user.id|slugify as id %} 
     {% with link_start|add:id|add:"/\">" as link %} 
     {% with link|add:rating|add:"/5</a>" as data %} 
      {% include "XX" with custom_data:data|safe %} 

{% endwith %} a couple of times 

主要是|stringformat:".1f"和自user.id|slugify没有他们,Django的的信念worthless模板语言默认所有值是数值,并因此废话出来。

值得注意的还有|safe,因为没有它,语言就会逃避价值。

0

待办事项:我需要过滤器来做到这一点,因为其结果将是 作为参数传递给包括。

您可以直接将它们传递给include,因为它会正确地处理上下文。

{% include user.id %} 
+0

不可以!查看我的更新。 – 2014-09-02 12:01:52