使用 Django 国家以 Django 表单和模板显示标志

Display flags in Django form & templates with Django-countries

我正在使用 Django-countries,但我无法在我的 Django 表单或任何模板中在每个国家旁边显示国旗。

我很好地显示了国家列表,我在静态文件夹中正确设置了标志文件夹。但是无法显示标志。

在我的模型中我有:

PaysNaissance = CountryField(blank_label='Sélectionner un pays', verbose_name='Pays de naissance')

然后,我的表格显示这样的国家:

如您所见,none 标志出现在我的列表中。你对这个问题有什么想法吗?

设置配置良好,在我的模板中有:

<table style="width:100%">
            <tbody>
                <p></p>
            <tr>
                <th> Informations sur l'individu </th>
                <th> Données renseignées </th>
            </tr>
            <tr>
                <td>Pays de Naissance</td>
                <td>{{personne.PaysNaissance}}</td>
            </tr>
            </tbody>
 </table>

它显示:FR 但是如果我想显示标志,我设置 {{personne.PaysNaissance.flag}} 并且我有 /static/flags/fr.gif.

所以为了显示标志我必须写: <td><img src='{{personne.PaysNaissance.flag.url}}'/></td>

但是好像不行。

在我的表格部分:

<form class = "form" method='POST' action='' enctype="multipart/form-data"> {% csrf_token %} <br></br>

        {{ form.as_p }} 
        {{birthday|date:"%d/%m/%Y" }} 
        <input type="submit" onclick="return confirm('Valider le formulaire ?')" /> 
    </form>

你需要写:

<td><img src='{{personne.PaysNaissance.flag}}'/></td>

因为 {{ personne.PaysNaissance.flag }} 本身包含标志 url。你不需要额外写flag.url。

还可以做一件事:

使用:

<link rel="stylesheet" href="{% static 'flags/sprite.css' %}">


<td><i class="{{ personne.PaysNaissance.flag_css }}"></i></td>

这会起作用。