2013-11-25 118 views
0

我有以下success function ajax調用,它爲圖像創建HTML並將其附加到div用Django模板標籤內部的JavaScript變量代替

success:function(response) 
    { 
     var new_comment = $('<div class="row" style="background-color:white;margin:5px;">{% thumbnail '+response.author_image+' "35x35" crop="center" as im %}<img src = "{{im.url}}" width="{{im.width}}" height="{{im.height}}" >{% endthumbnail %}') 

     $(".comments").append(new_comment); 

    }, 

我使用sorl-thumbnail應用程序來顯示模板中的圖像。這是通過{% thumbnail url ...%}標籤完成的,該標籤需要圖像的url。

此URL存儲在response.author_image和Im試圖在模板標記內替換此值。

response.author_image通過

{% thumbnail '+reponse.author_image'+ ... %} 

保持此值'/media/Images/Profile_2_(PSF)_5.png'

這樣做是替代變量名稱,而不是它的值:

[Errno 2] No such file or directory: u'/home/hammad/virt_env/virt1/gccFishing/gccFishing/media/+response.author_image+' 

我怎麼能代替的response.author_image值內thumbnail template tag

TIA

回答

0

從你的問題,很明顯,你不明白的服務器端模板語言和客戶端Javascript,這是一個非常基本的東西不明白之間的差別。

模板標籤在服務器端進行評估,所有Javascript將會看到的是這些標籤的呈現響應。這意味着沒有辦法將JS函數的結果插入標籤本身。

但是,既然您使用的是Ajax調用,爲什麼不從該響應返回div的完整HTML(包括呈現的模板標記)呢?也就是說,使用模板片段並將其渲染爲Ajax視圖的響應。

0

還有就是你似乎缺少Django的模板代碼JavaScript之間的和在瀏覽器中一個重要的區別:

Django模板是建立在服務器端,而JavaScript是在客戶端執行。

這意味着模板代碼之前 JavaScript是始終執行(因爲它是由服務器執行,之前的頁面發送到客戶端)。因此,使用JavaScript處理Django模板代碼是絕對不可能的。

一種選擇是使用sorl-thumbnailget_thumbnail方法來獲得服務器端的正確縮略圖的URL,然後在你的Ajax響應返回,而不是author_image它。