在Django中显示表单非常简单:
<form action="" method="post">{% csrf_token %}
{{ form }}
<input type="submit" value="Update" />
</form>
Run Code Online (Sandbox Code Playgroud)
它基本上只是一个字-显示{{ form }}。非常简单,您可以将同一模板用于不同的表单。
fields = []如果您使用的是CBV,例如CreateView或UpdateView,则可以使用列表限制显示在表单上的字段。
与此并行的是,人们希望也有类似的工作流来显示模型(与编辑相反),例如在DetailView中。但是,没有这种事情。您必须为使用的每个DetailView编写一个自定义模板。如:
<h3>User: {{ user }}</h3>
<label>First Name</label>: {{ user.first_name }} <br />
<label>Last Name</label>: {{ user.last_name }} <br />
<label>Username</label>: {{ user.username }} <br />
<label>School</label>: {{ user.person.school.name }} <br />
Run Code Online (Sandbox Code Playgroud)
{{ form }}除了在此处打印的字段值之外,这与生成的内容非常相似input。
因此,我想知道为什么没有DetailView的可重用通用模板?对此有技术限制吗?还是它不像我想象的那样可重用?
我认为它并不像你想象的那样可重复使用。
可以想象,可以定义“标准”方式来呈现简单的模型属性,例如CharField- 当您进入更复杂的关系字段(例如ManyToManyField,,,ForeignKey)时,这很快就变得不可能OneToOneField。除了最简单的模型之外,您最终会很快覆盖任何默认表示。
其次,Django 不会(也不应该)对模型的用途有自己的看法,因此它不会尝试假设您想要如何渲染它们,这是有道理的。
这与在 Django 和 HTML 中定义各个表单字段的结构的表单不同,并且两者之间存在很强的相关性。
| 归档时间: |
|
| 查看次数: |
442 次 |
| 最近记录: |