Django和ajax图像文件上传错误和csrf

时间:2012-06-01 22:32:47

标签: ajax django

我尝试了Alex Kuhl's ajax script将图片上传到Django 1.4。

我的第一个问题是为什么我得到一个带有萤火虫的空白页面告诉我我有错误:

在我的模板html中:


$ is not defined
element: $('#file-uploader')[0],            

这是我的整个html文件: http://pastebin.com/NjbV5gMn

我的第二个问题是为什么ajax代码使用{{ csrf_token }}代替{% csrf_token %}。但如果我使用{% csrf_token %},我会收到萤火虫错误:


missing } after property list

'csrf_token': '<div style='display:none'><input type='hidden' name='csrfmiddlewaretoken' value='Cx0zFFak6OLgrHiAnFa3k4BPDmn4BgoT' /></div>',

编辑:我将元素更改为document.getElementById('file-uploader'),它似乎有用,所以我想我已经解决了我的第一个问题。

1 个答案:

答案 0 :(得分:0)

对于第一个问题,jQuery库引入了$,您需要在使用之前加载它。 (或使用等同于document.getElementById('file-uploader'))的$('#file-uploader')[0]

对于第二个问题,javascript行需要一个csrf标记,它可以通过{{ csrf_token }}引入,而不是包含输入字段w / csrf标记作为其值的div标记,{{1} }。

要让{% csrf_token %}生效,请查看the doc中的第3步,将{{ csrf_token }}添加到'django.core.context_processors.csrf'并在您的视图中使用TEMPLATE_CONTEXT_PROCESSORS