代码之家  ›  专栏  ›  技术社区  ›  lmiguelvargasf

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

  •  1
  • lmiguelvargasf  · 技术社区  · 6 年前

    emotion 其中包含 EMOTIONS 情绪 ). 但是,这完全是呈现纯文本而不是图标。

    enter image description here

    有没有可能以我正在尝试的方式显示字体图标?这是我的表格:

    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>
    

    我试过了 {{ form|safe }} ,但没有起作用。

    2 回复  |  直到 6 年前
        1
  •  2
  •   lmiguelvargasf    6 年前

    解决方法是使用 mark_safe .

    所以我挣扎了一个小时,我决定问一个问题,在看到这个问题后,我在贴出来大约20分钟后,我就想出来了 safe 在模板中用于渲染 HTML .

    from django.utils.safestring import mark_safe
    
    class PreferencesForm(forms.Form):
        EMOTIONS = [
            ('😂', 'Joy'),
            ('😢', 'Sad'),
            ('😡', 'Angry'),
            ('😫', 'Tired'),
            ('🙂', mark_safe('<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())
    

    HTML中不需要任何更改。

        2
  •  0
  •   Brian Destura    6 年前

    <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,
        }
    )
    

    unicode for joy表情符号可在此处找到: https://www.fileformat.info/info/unicode/char/1f602/index.htm