2010-07-03 46 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 }}