【问题标题】:URL Encoding/Decoding - Django Internet ExplorerURL 编码/解码 - Django Internet Explorer
【发布时间】:2013-02-15 02:06:07
【问题描述】:

django 是如何自动对表单数据进行编码和解码的?说,我有以下表格。

 <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['name'] 给了我字符串正确,但在 Internet Explorer 上,它给了我“This+is+name+value”,我必须在其上运行 urllib.unquote_plus() 以获得适当的值(这是名称值,即!)。

简而言之,来自 Internet Explorer 的所有表单数据似乎都没有以不同的格式解码或编码。 (哪一个?)我在 stackoverflow 上进行了广泛的搜索,但找不到任何有帮助的东西。欢迎学习意见!

【问题讨论】:

    标签: html django forms internet-explorer urlencode


    【解决方案1】:

    我认为您需要在表单中添加一个enctype 属性。 IE 应该默认为 application/x-www-form-urlencoded,但你永远不知道 IE。我知道 text/plain 的 enctype 会将空格转换为 +。

    试试:

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

    如果您的表单需要支持文件字段,请使用:multiplart/form-data

    【讨论】:

    • 谢谢。但是,如果我没记错的话,即使 application/x-www-form-urlencoded 也将空格编码为“+”符号,并且特殊字符会转换为 ASCII HEX 值。 (这发生得很好)这里的问题是 Firefox/Chrome,我使用的框架(Django)似乎会自动解码表单提交上的编码表单数据,但使用 IE,它似乎并没有做同样的事情。如果我每次都必须检查 UserAgent 并解码数据,即使是非 IE 用户也必须通过该检查,这是一个额外的调用。我想我必须多读书。
    • 我实际上从未见过您在 Django 中使用表单时遇到的行为,而且我从 0.96 开始就一直在使用它。您介意发布您的模型/视图代码,以便我们了解全貌吗?
    • 抱歉格式有问题。我在手机上。稍后会附上链接。
    猜你喜欢
    • 2012-04-24
    • 2016-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-10
    • 2018-08-30
    • 2011-08-05
    • 1970-01-01
    相关资源
    最近更新 更多