Django render_to_string标签

时间:2016-01-29 09:17:03

标签: python html django

我的django应用程序我想将静态html页面加载到主模板中。此静态html页面是一个电子邮件模板。我的目标是在我的主模板中编辑此电子邮件。电子邮件html页面在url.py中没有视图。我没有在主模板中使用include,我也不想使用iframe。问题是我想加载所有的html电子邮件标签(如

 <html>
 <head>
 <body>

)但是当我执行页面渲染时,此标记会被删除(或者我在主模板中看不到它们)。这是我的代码:

view.py

def my_view(request):
    file_name = "/templates/path/emailtemplate.html"
htmlblock = render_to_string(file_name, {})
return render_to_response('main_template.html', {
        'htmlblock': htmlblock,
    },
    context_instance = RequestContext(request))

main_template.html

    <html>

<head>
  ....
  <head>
    <body>
      <div id="content">
        {{htmlblock}}
      </div>
    </body>
</html>

这就是我想要的:

<html>

<head>
  ....
  <head>
    <body>
      <div id="content">
        <html>
        <head>
          ....
        </head>

            <body>
              ...
            </body>
        </html>
      </div>
    </body>
</html>

如果没有iframe,这可能吗?非常感谢你的帮助。

修改

我的目标是拥有

 <html>
 <head>
 <body> 

标记到

 <div id="content"> 

我加载电子邮件模板。

1 个答案:

答案 0 :(得分:1)

My goal is to edit this email in my main template.

您可以通过

将模板读入字符串
with open('/templates/path/emailtemplate.html', 'r') as content_file:
    content = content_file.read()

您可以将相同的值用作编辑字段的值,它将照常显示。这可以用作。

return render_to_response('main_template.html', {
        'htmlblock': content,
    }, context_instance = RequestContext(request))

您可以在编辑字段中进一步使用相同的内容:

<textarea value={{htmlblock}}>

或者在

中正常渲染
<div id="content">{{htmlblock}}</div>