2016-08-17 176 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

在{{}}被評估之後,它不會像那樣工作,所以沒有更多評估。所以你看到了字符串。 您需要編輯的代碼,

Jinja(從{{}} html代碼創建模板轉換器)評估您的模板功能並將其插入到該位置。之後,Django發送到瀏覽器:

<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"> 
相關問題