2013-02-14 81 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