在django中使用测试客户端时,我遇到了一个非常奇怪的行为。Django的Querydict怪异行为:将POST字典串成单个键
我正在使用POST
将数据发送到我的django应用程序。我通常从iPhone应用程序和/或测试html表单执行此操作。在服务器端,这是我如何处理它:
def handle_query(request):
print request
q = con.QueryLog()
q.ID = request.POST.get('ID', '')
q.device = request.POST.get('device-model', '')
....
打印语句看起来象你所期望的,即在发布请求的每个参数变成在字典中键:
POST :QueryDict:{u'app-version':[u'3.0'],u'server-version':[u'v3d0'],
但是,我开始使用Django的测试客户端编写一些测试,不管我尝试什么,我在POST请求中发送的POST参数字典都集中在QueryDict
中的一个密钥中。请允许我与一些代码说明:
类SearchTest(测试用例): DEF设置(个体经营): 通
def test_search(self):
request = HttpRequest()
data = '{"amzn_locale": "com"}'
# request._raw_post_data = data
resp = self.client.post(
'/is/',
data=data,
content_type='application/x-www-form-urlencoded',
# content_type='application/json',
)
在服务器端相同的打印语句显示字典的莫名组合成的字符串:
POST: QueryDict: {u'{"amzn_locale":"com"}': [u'']}>,
如果我设置数据的实际字典,同样的事情
data = {"amzn_locale": "com"}
设置request._raw_post_data不会改变任何东西。也不改变
content_type='application/json'
任何帮助将不胜感激。从这个计算器问题,好像我没有碰到这个 iphone Json POST request to Django server creates QueryDict within QueryDict
Gabi感谢编辑 – Andres 2011-06-11 12:48:20