簡體   English   中英

django 模板中的`form.as_p` 來自哪里?

[英]where `form.as_p`in django templates come from?

我有一個通用視圖和一個表單模板。
我的觀點是:

class BlogCreateView(CreateView):
    model = Post
    template_name = "post_new.html"
    fields = "__all__"

我的表單模板是:

{% extends "base.html" %}
{% block content %}
    <h1>New Post</h1>
    <form action="" method="POST">
        {% csrf_token %}
        {{ form.as_p }}
        <input type="submit" value="Save" />
    </form>
{% endblock content %}

現在我的問題是關於form.as_p或特別是form
那個是從哪里來的?

請幫幫我。 多謝

.as_p() [Django-doc]Form上的一個方法。 它生成一個SafeText對象 [Django-doc] ,其中包含要包含在模板中的 HTML 代碼。

它是SafeText的事實很重要,因為否則 Django 渲染引擎將“轉義”它:如果不使用SafeText ,它會將<替換為&lt; ; >&gt; 等。當然,除非您自己將它包裝在SafeText對象中,例如通過|safe模板過濾器 [Django-doc]

例如,我們可以在文檔中定義一個表單:

 class OptionalPersonForm(forms.Form): first_name = forms.CharField() last_name = forms.CharField() nick_name = forms.CharField(required=False)

如果我們然后構造一個表單對象,我們可以調用.as_p()方法:

>>> OptionalPersonForm().as_p()
'<p><label for="id_first_name">First name:</label> <input type="text" name="first_name" required id="id_first_name"></p>\n<p><label for="id_last_name">Last name:</label> <input type="text" name="last_name" required id="id_last_name"></p>\n<p><label for="id_nick_name">Nick name:</label> <input type="text" name="nick_name" id="id_nick_name"></p>'
>>> type(OptionalPersonForm().as_p())
<class 'django.utils.safestring.SafeText'>

Django 表單具有三種流行的渲染方法: .as_p.as_table() [Django-doc].as_ul() [Django-doc] 不同之處在於它們呈現的 HTML 略有不同:作為段落、表格或無序列表的 HTML。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM