Django 表单帮助文本最佳实践

1 投票
1 回答
1019 浏览
提问于 2025-05-11 02:14

我们在代码审查时发生了争论。在哪个地方放置长的帮助文本在一个Django项目中比较好呢?

情况是:我们需要在一个字段中添加相对较长的帮助文本(大约320个字符)。我们使用ModelForm来渲染表单,同时使用Bootstrap库来美化表单。

观点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文件里比放在.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. 将来我们也可以在里面使用HTML,使用mark_safe()函数。

你对这两个选项怎么看?能分享一下你认为处理帮助文本的最佳方法吗?

相关文章:

  • 暂无相关问题
暂无标签

1 个回答

-2

在我看来,“字段自动生成”这个想法真是糟糕。好吧,确实有一些字段属性是来自模型,但大部分应该直接写在HTML里。

这个项目 django-silhouette 很好地解决了这个问题,所以我在当前的项目中也在使用它。

至于问题本身,我会把帮助文本放在HTML里,作为一个临时解决方案,直到你解决在HTML中重复内容的问题(这可以通过django-silhouette来帮助,或者使用共享的HTML部分)。

撰写回答