DetailView 和模板

DetailView and templates

Django 1.9.7

你能帮我解决三个关于DetailView的问题吗:

  1. 为什么 DetailView 不将表单放入上下文中而 CreateView 会? 我的意思是编写一个模板非常麻烦,其中每个字段都单独显示,如 object.headline 或 object.content。在 CreateView 的情况下,我们只需将 {{ form.as_p }} 放入模板中。方便多了。所以,这背后肯定有一些逻辑是我经验不足,感受不到的。

  2. 是否有第三方应用程序可以使用 DetailView 的模板标签?或者用其他方法自动选择要在模板中显示的字段。

  3. 或者我应该自己在 get_context_data 中填一个表格?

DetailView 不适用于编辑。为此目的使用 UpdateView

如果您想以相同的格式循环显示每个字段,则必须在上下文中将您的字段名称作为列表传递,然后循环遍历此列表:

{% for field_name in field_names %}
  <tr>
    <th>{% get_field_label object field_name %}</th>
    <td>{% get_field_value object field_name %}</td>
  </tr>
{% endfor %}

并创建自定义模板标签:

@register.simple_tag
def get_field_label(obj, name):
    return obj._meta.get_field(name).verbose_name

@register.simple_tag
def get_field_value(obj, name):
    return getattr(obj, value)