在Django中上傳文件我想使用Uploadify在this tutorial之後上傳Django中的文件。我已經正確地執行了所有步驟。除此之外,我還創建了一個模型,用於存儲有關正在上傳的文件的信息。使用Uploadify獲取HTTP響應代碼403
我的模板中包含此
<script type="text/javascript" src="{{ STATIC_URL }}uploadify/swfobject.js"></script>
<script type="text/javascript" src="{{ STATIC_URL }}uploadify/jquery.uploadify.v2.1.4.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$('#file_upload').uploadify({
'uploader' : '{{ STATIC_URL }}uploadify/uploadify.swf',
'script' : '{% url upload_file %}',
'cancelImg' : '{{ STATIC_URL }}uploadify/cancel.png',
'auto' : true,
'multi' : true,
'fileExt' : '*.doc;*.docx;*.pdf',
'fileDesc' : 'Upload Docs',
'queueID' : 'file_upload_queue',
'removeCompleted': false,
});
});
</script>
<h2 id="smallHeading"> Upload your Documents </h2>
<input id="file_upload" type="file" name="Filedata" />
<a href="javascript:$('#file_upload').uploadifyUpload();">Upload Files</a>
我url.py文件中包含該行
url(r'^upload/$', 'userprofile.views.upload_file', name='upload_file'),
和看法是
@csrf_exempt
def upload_file(request):
if request.method == "POST":
upload_file = request.FILES['Filedata']
upload_instance = Uploads.objects.create(creator = request.user, uploaded_on = datetime.datetime.now())
upload_instance.file.save(upload_file.name,upload_file)
upload_instance.save()
response = HttpResponse()
response.write("%s\r\n" % upload.name)
return response
和我models.py
包含
def get_file_path(instance, filename):
return os.path.join('userprofiles', str(instance.creator.id), filename)
class Uploads(models.Model):
file = models.FileField(upload_to=get_file_path)
creator = models.ForeignKey(User)
uploaded_on = models.DateTimeField()
但這裏沒有任何事情發生。我得到的只是上傳按鈕,我選擇了這些文件,但沒有任何反應。任何人都可以幫助我找出發生的事情嗎?看來script
沒有被解僱。我知道這一點,因爲以前我在我的視圖中有錯誤,但沒有出現錯誤。
任何幫助深表謝意。
編輯:
我沒有看到在firebug
控制檯什麼,以及net
面板也沒有表現出任何POST
請求,但django debugger
顯示了403
響應文件上傳的POST請求。我已經使用csrf_exempt
那麼爲什麼它應該是forbidden
?
解決方案:我終於解決了這個問題。關於403錯誤,我從link發現了一些有趣的東西。如果一個視圖有修飾器csrf_exempt
,並且該視圖有404錯誤,那麼django會顯示403錯誤。
實際的問題是,最初我的鏈接是錯誤的,所以當我糾正它,我停止了403錯誤,但我開始得到500錯誤。這意味着在視圖中出現了錯誤。由於uploadufy不會在firebug中記錄任何內容,所以我必須通過在我的視圖中逐行進行調試。
似乎由uploadify
腳本發送的請求對象不完整,並且在創建對象時行creator = request.user
給我錯誤。除了這一行,上面的代碼完全可以工作。
是否在設置中啓用了DEBUG? – vikingosegundo 2012-01-12 14:19:38
yes'DEBUG'已啓用,我嘗試製作一個正常的文件上傳表單,並且它工作得很好 – Sachin 2012-01-12 14:29:28
如果啓用了調試,您應該獲得更多信息,比在此處發佈的信息要多。 – vikingosegundo 2012-01-12 15:10:42