【问题标题】:Django form help_text best practicesDjango 表单 help_text 最佳实践
【发布时间】:2016-02-28 04:58:48
【问题描述】:

我们在代码审查期间陷入了争论。在 django 项目中保存长格式帮助文本的最佳位置在哪里?

情况:我们需要在一个字段中添加比较长(大约 320 个字符)的帮助文本。对于表单渲染,我们使用 ModelForm。对于表单渲染,我们使用引导库。

意见 A:直接将其添加到 HTML 模板中。

# template.html
<div class="form-group">
     <label for="{{ form.field.id_for_label }}">{{ form.field.label }}</label>
    {{ form.field }}
    <span class="help-block">
        Help text Help text Help text Help text Help text Help text Help text Help text Help text Help text Help text Help text Help text Help text Help text Help text Help text Help text Help text Help text Help text Help text Help text Help text Help text Help text Help text Help text Help text Help text Help text Help text.
    </span>
</div>

优点:

  1. 最好在 html 文件中保留较长的 help_text,而不是 .py
  2. 将来我们可能想要添加 HTML 标记,最好将它也包含在 HTML 文件中。

选项 B:将其添加到 ModelForm 的 Meta。

# forms.py
help_texts = {
    'field': 'Help text Help text Help text Help text Help text Help text Help text Help text Help text Help text Help text Help text Help text Help text Help text Help text Help text Help text Help text Help text Help text Help text Help text Help text Help text Help text Help text Help text Help text Help text Help text Help text.'
}
# template.html
{% bootstrap_field form.field %}

优点:

  1. 字段是自动生成的,不是硬编码的。
  2. 将来我们也可以在其中包含带有mark_safe() 的HTML。

您如何看待这些选项?您能否分享您对处理 help_text 的最佳方式的看法?

【问题讨论】:

    标签: python django


    【解决方案1】:

    恕我直言,“字段自动生成”的整个想法太可怕了。好的,一些字段属性来自模型,但大部分应该在 HTML 本身中。

    django-silhouette 项目很好地解决了这个问题,这就是我在当前项目中要解决的问题。

    至于问题本身,我会将帮助文本放在 HTML 中,作为临时解决方案,直到您解决在 HTML 中重复自己的问题(可以通过帮助 django-silhouette 或仅共享 HTML 部分)。

    【讨论】:

    • 我认为自动生成的想法很棒,如果做得正确(即 90% 的时间可以正常工作,并且在不正常的情况下可以轻松覆盖)。
    猜你喜欢
    • 1970-01-01
    • 2012-07-19
    • 2022-01-18
    • 2011-01-11
    • 2016-04-30
    • 2014-06-21
    • 1970-01-01
    • 1970-01-01
    • 2018-03-17
    相关资源
    最近更新 更多