在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