2016-08-17 7 views
1

私は静的なファイルにオブジェクトを表示したいと思います。しかし、いくつかのオブジェクトでは、私は写真がなく、それらのために、「写真はありません」というイメージを表示したいと思います。したがって私はピクチャと呼ばれるフィールドを持っています。ピクチャは利用可能なピクチャを持つオブジェクトに対して1に設定され、ピクチャが利用できないピクチャは0に設定されます。 正しい画像を挿入できるテンプレートタグを作成しましたが、問題に直面しています。djangoのカスタムテンプレートタグを使用して写真を表示

テンプレートタグファイル:

def static_picture(id_internal, picture): 
    if picture == 1: 
     return '"' + "{% static" + ' "' + 'img/pictures/' + id_internal + '.jpg' + '"' + ' %}' + '"' 
    else: 
     return '"' + "{% static" + ' "' + 'img/pictures/picture_missing.jpg' + '"' + " %}" + '"' 

HTML:

<img src="{{ object.id_internal|static_picture:object.picture }}" class="img-responsive"> 

はこの出力が、全く絵を示さない:

<img src="{% static "img/pictures/339-10026.jpg" %}" class="img-responsive"> 

パスが正しいピクチャが存在します。私は間違って何をしていますか?

答えて

1

{{}}が評価された後、それ以上の評価はありません。だからあなたは文字列を参照してください。 ドンコードを編集する必要があります

ジンジャー({{}} htmlコードからテンプレートトランスレータを作成)がテンプレート関数を評価し、その場所に挿入します。その後、これをブラウザに送ってください。

<img src="{% static "img/pictures/339-10026.jpg" %}" class="img-responsive"> 

ブラウザはこれを分かりません。だからあなたはあなたの関数full_pathに戻らなければなりません。

{%static ...%}静的フォルダへのパスをパスの先頭に付けます。このパスは設定で使用できます。設定は、django.confのモジュール設定でアクセスできます。

from django.conf import settings 
def static_picture(id_internal, picture): 
    if picture == 1: 
     return '"{}/img/pictures/{}.jpg"'.format(settings.STATIC_URL, id_internal) 
    else: 
     return '"{}/img/pictures/picture_missing.jpg"'.format(settings.STATIC_URL) 

このファイルへのフルパスを返す

<img src="{{ object.id_internal|static_picture:object.picture }}" class="img-responsive"> 
<img src="path/to/static_folder/img/picturesXXX.jpg" class="img-responsive"> 
関連する問題