![](/img/trans.png)
[英]Could not parse the remainder: '% form.as_p %' from '% 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
,它會將<
替換為<
; >
與>
等。當然,除非您自己將它包裝在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.