在Django模板标记中替换javascript变量
我有以下ajax调用的在Django模板标记中替换javascript变量,javascript,jquery,django,django-templates,Javascript,Jquery,Django,Django Templates,我有以下ajax调用的success函数,它为图像创建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
success函数
,它为图像创建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 );
},
正在替换变量名而不是其值:
[Errno 2] No such file or directory: u'/home/hammad/virt_env/virt1/gccFishing/gccFishing/media/+response.author_image+'
如何替换缩略图模板标记内的response.author\u image
的值
TIA从您的问题中可以清楚地看出,您不了解服务器端模板语言和客户端Javascript之间的区别,这是一个非常基本的问题
模板标记在服务器端进行评估,Javascript将看到这些标记的呈现响应。这意味着无法将JS函数的结果插入标记本身
但是既然您使用的是Ajax调用,为什么不从该响应返回div的完整HTML(包括呈现的模板标记)?也就是说,使用模板片段并将其作为Ajax视图的响应进行渲染。Django模板代码和浏览器中的JavaScript之间有一个重要的区别,您似乎缺少:
Django模板是在服务器端构建的,而JavaScript是在客户端执行的
这意味着模板代码总是在JavaScript之前执行(正如服务器在页面发送到客户端之前执行的那样)。因此,使用JavaScript操纵Django模板代码是绝对不可能的
一种选择是使用sorl-thumbnail
的get\u-thumbnail
方法在服务器端获取正确的缩略图url,然后在AJAX响应中返回它,而不是author\u image
[Errno 2] No such file or directory: u'/home/hammad/virt_env/virt1/gccFishing/gccFishing/media/+response.author_image+'