2012-06-22 73 views
2

我最近一直在爲我的小博客網站實施ajax based file uploader。我也有一個小的表單(與ajax文件上傳器在同一頁面上),它收集諸如姓名,電子郵件ID等基本信息。現在,我遇到的問題是,當用戶通過ajax上傳器上傳文件時並完成表格,我無法獲得上傳文件的「文件名」。Django ajax fileupload集成到模型表格

基本上,我想寫出從ajax上傳到我的表單字段的文件名。本身的上傳工作正常,我也可以通過螢火蟲看到POST消息。所以,我可以看到一些像這樣的JSON:

{ 
    "path": "/media/uploads/paperscience_5055721894547287.pdf", 
    "success": true, 
    "filename": "paperscience_5055721894547287.pdf" 
} 

我想將「path」參數放入名爲filenames的表單域中。

我的Django代碼爲here

我將不勝感激任何指導,以實現上述。

回答

2

在你的響應函數:

的文件名添加到您的表單文件名域(假定字段ID:id_filenames):

$('#id_filenames').val(responseJSON.path); 

如果你想重新提交此,您可以添加一些包含文件名的隱藏字段。只需將隱藏字段附加到表單中,當用戶提交時,這將成爲POST數據的一部分。

+0

我的模型有字段「filenames = models.CharField(max_length = 100,null = True,blank = True)」,我發出「exclude =('filenames',)」,以便它不會在我的模板上呈現。我已經從'#id_filenames'更改爲'#filenames',但我沒有看到文件名被記錄在我的發佈請求中。當你說「只需將隱藏字段附加到表單並且用戶提交時,這將成爲你的POST數據的一部分」,你能解釋我該如何實現這一點嗎?非常感謝。 – AJW

+0

您可以使用jQuery向表單添加隱藏字段。如果你想使用POST鍵文件名提交該字段,那麼只需執行: '$('#form_id')。append('')' 在這裏form_id是您的表單ID,您應該添加一個,以便jQuery可以更快地找到它。這個塊應該放在你的回調函數中。因此,完整的塊將如下所示: 'if(responseJSON.success){('#form_id')。append(''); }); ' –

+0

當你說「在這裏form_id是你的表單ID,你應該添加一個,以便jQuery可以更快地找到它」你到底意味着什麼?我什麼都沒有稱爲「form_id」,我想知道我應該在這裏使用什麼(?)。 – AJW