我试图在我的 Django 表单中为选择字段生成帮助文本
i_agree = forms.CharField(label="", help_text="Initial to affirm that you agree to the <a href='/contract.pdf'>contract</a>.", required=True, max_length="4")
但是,原始 HTML 在帮助文本中呈现为输出。如何将 HTML 输入到 Django 表单字段的帮助文本中?
我试图在我的 Django 表单中为选择字段生成帮助文本
i_agree = forms.CharField(label="", help_text="Initial to affirm that you agree to the <a href='/contract.pdf'>contract</a>.", required=True, max_length="4")
但是,原始 HTML 在帮助文本中呈现为输出。如何将 HTML 输入到 Django 表单字段的帮助文本中?
您可以mark_safe
在模型中使用来指示 html 是安全的,它应该被解释为:
from django.utils.safestring import mark_safe
i_agree = forms.CharField(label="", help_text=mark_safe("Initial to affirm that you agree to the <a href='/contract.pdf'>contract</a>."), required=True, max_length="4")
如果您自己遍历表单,您也可以在模板中将其标记为安全:
{% for f in form %}
{{f.label}}{{f}}{{f.help_text|safe}}
{%endfor%}
这是在模板中这样做的一个非常简单的示例。你需要做更多的事情才能让它看起来不错。
您可以使用外部文件来提高可维护性和关注点分离:
__init__()
方法;super(MyForm, self).__init__(*args, **kwargs)
;render_to_string()
给self.fields['my_field'].help_text
。从 django.template.loader 导入 render_to_string
class MyForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(MyForm, self).__init__(*args, **kwargs)
# Only in case we build the form from an instance,
if 'instance' in kwargs and kwargs['instance'].nature == consts.RiskNature.RPS:
self.fields['my_field'].help_text = render_to_string('components/my-template.html')
# ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^
{% load i18n %}
<table class="table table-bordered">
<tr>
<th>{% trans 'Externe' %}</th>
</tr>
<tbody class="text-muted">
<tr>
<td>{% trans "En lien avec les relations de travail" %}</td>
</tr>
<tr>
<td>{% trans "-" %}</td>
</tr>
</tbody>
</table>
使用带有只读的 textarea 标签
<textarea readonly> <p>stuff</p> </textarea>