Skip to main content
 首页 » 编程设计

python之如何通过{{变量/方法}}将Django模板代码注入(inject)到模板中

2024年10月17日30java哥

我有一个在许多模板中使用的模型 Reservation。创建自己的 HTML/Django 代码片段很方便,它通过变量/模型方法注入(inject)到模板中。

原始 HTML 使用该方法是正确的,但 Django 模板语言未正确解释。

这是一个预订方法:

def get_html_description(self): 
    return """<ul> 
                <li><b>ID:</b> {{ reservation.id }}</li> 
                <hr> 
                <li><b>From:</b> {{ reservation.get_text_destination_from }}</li> 
                <li><b>To:</b> {{ reservation.get_text_destination_to }}</li> 
                <hr> 
                <li><b>Date:</b> {{ reservation.get_date }}</li> 
                <li><b>Time:</b> {{ reservation.get_time }}</li> 
              </ul>""" 

现在我尝试将这段代码注入(inject)到模板中:

<div class="events"> 
     {% for reservation in data.1 %} 
         <div class="event"> 
              <h4>{{ reservation.get_text_destination_from }} to {{ reservation.get_text_destination_to }}</h4> 
              <div class="desc"> 
                  {% autoescape off %}{{ reservation.get_html_description }}{% endautoescape %} 
              </div>... 
                    ... 

不幸的是它呈现了这样的东西:

你知道要做什么吗?我已经尝试过过滤器 |safe 和 {% autoescape off %}

请您参考如下方法:

您要求的是双重替换,我认为 Django 模板引擎不会这样做。由于您是从 Reservation 实例中提取数据,因此我将使用字符串替换来填充它。例如:

 return """<ul> 
                <li><b>ID:</b> {pk}</li> 
                <hr> 
                <li><b>From:</b> {destination_from}</li> 
                ... 
           </ul>""".format(pk=self.id, 
                           destination_from=self.reservation.get_text_destination_from)