我有一个ajax调用的success function
,它为图像创建HTML并将其附加到div
。
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 app在模板中显示图片。这是由需要图片网址的{% thumbnail url ...%}
标记完成的。
此网址存储在response.author_image
中,我试图在模板标记内替换此值。
response.author_image
保留此值'/media/Images/Profile_2_(PSF)_5.png'
通过
执行此操作{% thumbnail '+reponse.author_image'+ ... %}
替换变量名而不是其值:
[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 :(得分:0)
从您的问题中可以清楚地看出,您并不了解服务器端模板语言与客户端Javascript之间的区别,这是一个非常基本的理解。
模板标签在服务器端进行评估,所有Javascript将看到的是这些标签的呈现响应。这意味着无法将JS函数的结果插入到标记本身中。
但是既然你正在使用Ajax调用,为什么不从该响应中返回div的完整HTML - 包括呈现的模板标记?也就是说,使用模板片段并将其渲染为Ajax视图的响应。
答案 1 :(得分:0)
您似乎缺少Django模板代码和浏览器内JavaScript之间的重要区别:
Django模板构建在服务器端,而JavaScript则在客户端执行。
这意味着模板代码总是在 JavaScript之前执行(因为它是在服务器执行之前,在页面发送到客户端之前)。因此,使用JavaScript操作Django模板代码是绝对不可能的。
一种选择是使用sorl-thumbnail
的{{1}}方法在服务器端获取正确的缩略图网址,然后在AJAX响应中返回,而不是get_thumbnail
。