2013-02-14 30 views
0

django如何自動編碼和解碼錶單數據?說,我有以下形式。URL編碼/解碼 - Django Internet Explorer

<form method="POST" action="MY_SERVER_URL"> 
    <p><label for="id_name">Name:</label> <input id="id_name" type="text" name="name"/></p> 
    <button type="submit">Save</button> 
</form> 

當我嘗試發佈該表格名稱值,說:「這是名值」到我的服務器,當我在使用Chrome或Firefox或Safari瀏覽器時,request.POST [「名」]我視圖給了我正確的字符串,但在Internet Explorer上,它給了我「This + is + name + value」,我必須對其運行urllib.unquote_plus()以獲取適當的值(這是名稱值,即!)。

總之,來自Internet Explorer的所有表單數據似乎都沒有被解碼或以不同格式編碼。 (哪一個?)我已經在stackoverflow上進行了廣泛的搜索,但找不到任何有幫助的東西。瞭解到的意見,歡迎!

回答

0

我認爲你需要添加一個enctype財產的形式。 IE應該默認爲application/x-www-form-urlencoded,但是你永遠不會知道IE。我知道一個文本/純文本的類型會將空格轉換爲+。

嘗試:

<form action="." method="post" enctype="application/x-www-form-urlencoded"> 

或使用:multiplart/form-data如果表單需要支持文件中的字段。

+0

謝謝。但是,如果我沒有記錯,甚至application/x-www-form-urlencoded也會將空格編碼爲「+」符號,而特殊字符會轉換爲ASCII HEX值。 (這是正常的發生) 這裏的問題是與Firefox/Chrome,我使用的框架(Django)似乎自動解碼錶單提交編碼的表單數據,但與IE瀏覽器,它似乎並沒有做相同。如果我必須每次檢查UserAgent並解碼數據,即使非IE用戶也必須通過該檢查,這是一個額外的電話。我想我應該多做一些閱讀。 – user601878 2013-02-18 11:21:45

+0

我從來沒有見過你在Django中使用表單的行爲,而且自0.96以來我一直在使用它。你介意發佈你的模型/視圖代碼,以便我們可以得到整個圖片嗎? – Brandon 2013-02-18 12:50:04

+0

看起來你忘了輸入鏈接... – Brandon 2013-02-18 19:10:05