2010-07-03 69 views
3

我试图用SWFUpload上传文件到Django。找到这篇文章Django with SWFUpload。但发现一个问题。在Django 1.2中,csrf需要在每个表单提交时发送csrf标记,并且它包含使用SWFUpload发送的文件。直到我关闭csrf(全局或使用@csrf_exempt装饰器查看视图)时才上传文件。有没有更好的方式来处理这个问题,而不是关闭csrf?SWFUpload与Django 1.2 csrf问题

我知道我可以使用SWFUpload post_params传递自定义数据:{“csrfmiddlewaretoken”:“”} ,.但是我不知道如何仅获取模板中的csrf标记的值,而不是完整的输入标记。

+0

我也使用django 1.2,并且我添加了csrf标记,但是我收到了“uploadError:... HTTP Status:403”。任何想法? – Marconi 2011-02-19 20:11:35

回答

2

要检索csrf标记本身,您需要使用Django的一些内部构件。首先,将此行放在视图的顶部。

from django.middleware.csrf import get_token 

现在,参数传递到您的模板时,这样做

def my_view(request): 
    return render_to_response("index.html", {"csrf_token": get_token(request)}) 

在你的模板,只是引用令牌{{ csrf_token }}