Joe*_*Joe 4 django django-forms
我想采用现成的形式(即从经过django.Forms.form验证的绑定数据派生的类的对象)并对它进行 urlencode,就好像它是通过 GET 提交的一样。有内置的方法吗?
为了说明为什么我要问这个问题,以及为什么我不能只调用urlencode,其输出应该是“ box=on”。
from django import forms
from urllib import urlencode
class DemoForm(forms.Form):
box = forms.BooleanField(required=False)
instance = DemoForm({"box": True}) # it's irrelevant how this data is supplied
instance.is_valid()
print "encoded:", urlencode(instance.cleaned_data)
Run Code Online (Sandbox Code Playgroud)
事实上它是“ box=True”,因为urlencode它不是对形式进行编码,而是对清理后的值进行编码(相信我,BooleanField这是最简单的情况)。
所以我要求一种对表单进行编码的方法,就好像它是一个 GET 字符串一样。正确的 GET 字符串。
在表单的 clean_data 上调用 urllib 的 urlencode 在两种情况下不会很好地工作:
要解决这两个问题,请使用表单的内置 urlencode 函数:
form = MyForm(request.POST) #or a dict or whatever
form.is_valid()
querystring = form.data.urlencode()
Run Code Online (Sandbox Code Playgroud)
请注意,这是对数据调用的,而不是对 clean_data 调用的。如果您的表单在验证过程中更改了值,这些更改将不会反映在此处。
| 归档时间: |
|
| 查看次数: |
2661 次 |
| 最近记录: |