Google App Engine渲染和Django表单

时间:2012-10-25 05:28:51

标签: google-app-engine django-forms django-templates

我正在尝试使用模板系统在我的Google App Engine项目中使用Django表单。但是,我无法弄清楚如何正确呈现表单。从python代码调用form.as_p()时,我得到了预期的html,

<p><label for="id_name">Name:</label> <input type="text" name="name" id="id_name" /></p>

然而,当从模板调用form.as_p时,我得到了

&lt;p&gt;&lt;label for=&quot;id_name&quot;&gt;Name:&lt;/label&gt; &lt;input type=&quot;text&quot; name=&quot;name&quot; id=&quot;id_name&quot; /&gt;&lt;/p&gt;

这是我的渲染方法

def render(self, name, **data):
    """Render a template"""
    if not data:
        data = {}
    self.response.out.write(template.render(
        os.path.join(
            os.path.dirname(__file__), 'templates', name + '.html'),
        data))

调用渲染方法:

form = PostForm()
self.render('toplevel', parent=user, items=user.establishments(), form=form)

最后是模板:

{% block content %}

    {{ form.as_p }}

{% endblock content %}

1 个答案:

答案 0 :(得分:1)

将模板中的表单更改为:

{% block content %}

    {{ form.as_p|safe }}

{% endblock content %}

这应该可以防止as_p中的HTML被转义。请参阅:https://docs.djangoproject.com/en/dev/ref/templates/builtins/#safe