我尝试使用
为我的Django表单中的Choice Field生成帮助文本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表单字段的帮助文本中?
答案 0 :(得分:41)
你可以在模型中使用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")
答案 1 :(得分:10)
如果您自己遍历表单,也可以在模板中将其标记为安全:
{% for f in form %}
{{f.label}}{{f}}{{f.help_text|safe}}
{%endfor%}
这是在模板中这样做的一个非常简单的例子。你需要做的不仅仅是让它看起来不错。
答案 2 :(得分:3)
您可以使用外部文件来提高可维护性和关注点分离:
__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>
答案 3 :(得分:-6)
使用带有readonly的textarea标签
<textarea readonly> <p>stuff</p> </textarea>