从Form中保留QueryDict中的特殊字符(Django)

Preserve special characters in QueryDict from Form (Django)

本文关键字:Django 特殊字符 QueryDict Form 保留      更新时间:2023-09-26

我的模板有一个简单的表单,它通过XMLHttpRequest返回给Django。

格式:

  <form id="myForm" onsubmit="return false;"  accept-charset="UTF-8" >{% csrf_token %}  
     <p><label for="dev_Ser">Device info:</label>
     <input type="text"  id="dev_Ser"name="devSerial" maxlength="100" /></p>
      <input id="subBut" type="submit" />  
   </form>

来回通信工作正常,但表单字段需要允许输入特殊字符,如%和&

当我检查到达Django服务器的POST中的QueryDict时,特殊字符已经丢失了。

在Django中,我使用:

print( str(request.POST) )

如果我的表单包含"hello%64", Django告诉我它看到:

<QueryDict: {u'device': [u'hellod'] }>

我一定错过了什么。我是否需要在javascript中做一些事情来编码文本输入的内容,然后再将其发布到我的Django服务器?

没有什么比发布问题更能让你自己快速找到答案了。为其他可能偶然发现这一点的人添加。

当我封装表单的文本条目通过XMLHttpRequest发送时,我可以使用javascript的encodeURIComponent()函数对内容进行编码,从而保留它们供Django处理。

因此,QueryDict显示字符正确通过,并且我得到了我所需要的"hello%64"。

欢呼。