2017-01-21 7 views
1

imgをhtmlに挿入するためにデータベースのカウントをループしていますが、{静的な}コマンドの処理はできません。具体的に:Djangoテンプレート:番号付きのimgをhtmlにロード

輸入views.pyからリスト:Djangoテンプレートexportnews.htmlで次に

queryset = db_imNewChk.objects.exclude(N_tag=u'').order_by("d_Rank") 
     for p in queryset: 
      if (p.gp_Email): 
       if (c_email): 
        if not("<li><a href=\"#\"><img src=\"{% static '/img/email_icon"+p.gp_Email+".png' %}\" width=\"20%\" style=\"padding: 3px\"></a></li>" in c_email): 
         c_email.append("<li><a href=\"#\"><img src=\"{% static '/img/email_icon"+p.gp_Email+".png' %}\" width=\"20%\" style=\"padding: 3px\"></a></li>") 
       else: 
        c_email.append("<li><a href=\"#\"><img src=\"{% static '/img/email_icon"+p.gp_Email+".png' %}\" width=\"20%\" style=\"padding: 3px\"></a></li>") 
... 
return render(request, 'exportnews.html', {'table': listExport, 'table2': listExport1, 'table_count': q_size, 'count_email' : sorted(c_email)}) 

{% load static %} 
     <td style="width:350px;height:80px;" rowspan="3" colspan="2"> 
      <ul class="images"> 
       {% for field in count_email %} 
        {{field|safe}} 

       {% endfor %} 
      </ul></td> 

私は何を達成したいことは、このようなものです

<li><a href="#"><img src="http://127.0.0.1:8000/static/img/email_icon1.png' %}" width="20%" style="padding: 3px"></a></li> 
<li><a href="#"><img src="http://127.0.0.1:8000/static/img/email_icon2.png' %}" width="20%" style="padding: 3px"></a></li> 
<li><a href="#"><img src="http://127.0.0.1:8000/static/img/email_icon3.png' %}" width="20%" style="padding: 3px"></a></li> 

しかし、レンダリングされるhtmlコードは次のようになります。

<li><a href="#"><img src="{% static '/img/email_icon1.png' %}" width="20%" style="padding: 3px"></a></li> 
<li><a href="#"><img src="{% static '/img/email_icon2.png' %}" width="20%" style="padding: 3px"></a></li> 
<li><a href="#"><img src="{% static '/img/email_icon3.png' %}" width="20%" style="padding: 3px"></a></li> 

{%static%}が機能しなかったようです。誰もこの問題を解決するために助言することができますか?どうもありがとう。

答えて

1

これは、safeフィルタのためのもので、何かをそのまま表現しています。テンプレートにhtmlレンダリングを保持する必要があります。表示を簡略化する:

# views.py 
... 
c_email = set() # easier than list 
queryset = db_imNewChk.objects.exclude(N_tag=u'').order_by("d_Rank") 
for p in queryset: 
    if p.gp_Email: 
     c_email.add(p.gp_Email) 
... 
return render(request, 'exportnews.html', {..., 'count_email': sorted(c_email)}) 

addフィルタを使用してください。 static tag only works with either a string literal or a variable

{% for foo in count_email %} 
    {% with '/img/email_icon'|add:foo|add:'.png' as static_bar %} 
    <li><a href="#"><img src="{% static static_bar %}" width="20%" style="padding: 3px"></a></li> 
    {% endwith %} 
{% endfor %} 
+0

ワウ、ありがとう、たくさんありますので、with構成を使用する必要があります。できます。以前はPythonでsetについて学んだことはありませんでしたが、実際にはこれらの新しい使い方についての素晴らしい教訓です! –

関連する問題