如何以Django形式显示标记而不是纯文本?

时间:2018-09-21 03:49:00

标签: django django-forms

我正在尝试显示一个使用“真棒字体”图标的表单。我有一个var exp = Expression.Call(property, property.Type.GetMethod("Contains",/*Here you need the type parameters*/), converted); 字段,其中包含emotion作为选项,我想显示与每个选项相关的字体真棒图标。我尝试仅添加标记(请参见EMOTIONS的最后一个选项)。但是,这恰好呈现了纯文本而不是图标。

enter image description here

是否可以按照我尝试的方式显示“真棒”图标?这是我的表格:

EMOTIONS

这是我的标记:

class PreferencesForm(forms.Form):
    EMOTIONS = [
        ('', 'Joy'),
        ('', 'Sad'),
        ('', 'Angry'),
        ('', 'Tired'),
        ('', '<i class="far fa-smile"></i>'),
    ]
    FAMOUS_PEOPLE = [
        ('US', 'Abraham Lincoln'),
        ('MX', 'Frida Khalo'),
        ('IT', 'Leonardo da Vinci'),
        ('FR', 'Napoleon Bonaparte'),
        ('JP', 'Hayao Miyazaki'),
    ]

    emotion = forms.ChoiceField(choices=EMOTIONS, widget=forms.RadioSelect())
    famous_person = forms.ChoiceField(choices=FAMOUS_PEOPLE, widget=forms.RadioSelect())

如何显示相应的字体真棒图标而不是标记?

我尝试过<form action="." method="post"> {% csrf_token %} {{ form }} <input type="submit" value="Submit"> </form> ,但是没有用。

2 个答案:

答案 0 :(得分:2)

解决方案是使用mark_safe

所以我花了一个小时的时间,我决定问一个问题,看到模板中使用safe来渲染{{ 1}}。

因此,我的表单最终如下:

HTML

无需在HTML中进行任何更改。

答案 1 :(得分:0)

尝试一下:

<form action="." method="post">
  {% csrf_token %}
  {% autoescape off %}
  {{ form }}
  {% endautoescape %}
  <input type="submit" value="Submit">
</form>

编辑:

或者您可以尝试以下操作:

test = u"\U0001F602"

return render(
    request,
    'index.html',
    {
        'test': test,
    }
)

“ \ U0001F602” 是用于喜悦表情的unicode,可在以下位置找到: https://www.fileformat.info/info/unicode/char/1f602/index.htm