1

テンプレートシステムを使用して、GoogleAppEngineプロジェクトで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;

これが私のrenderメソッドです

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))

呼び出されているRenderメソッド:

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

そして最後にテンプレート:

{% block content %}

    {{ form.as_p }}

{% endblock content %}
4

1 に答える 1

1

テンプレートのフォームを次のように変更します。

{% block content %}

    {{ form.as_p|safe }}

{% endblock content %}

これにより、as_pのHTMLがエスケープされるのを防ぐことができます。参照:https ://docs.djangoproject.com/en/dev/ref/templates/builtins/#safe

于 2012-10-25T12:33:22.753 に答える