2010-06-19 51 views
0

使用django trunk r13359和django活塞,我創建了一個存儲字符串值的小型寧靜服務。當存儲字符串值時不尋常的django管理行爲

這是我使用的存儲字符串的模式:

class DataStore(models.Model): 
    data = models.CharField(max_length=200) 
    url = models.URLField(default = '', verify_exists=False, blank = True) 

我用捲曲張貼以下數據:

curl -d "data=somedata" http://localhost:8000/api/datastorage/ 

這是處理存儲作爲django-的部分代碼活塞處理器

store = DataStore() 
store.url = request.POST.get('url',""), 
store.data = request.POST['data'], 
store.save() 
return {'data':store} 

當我用curl發佈數據時,我得到以下響應體,它是期望的編輯:

{ 
    "result": { 
     "url": [ 
      "" 
     ], 
     "data": [ 
      "somedata" 
     ], 
     "id": 1 
    } 
} 

但請告訴我不希望當我看從Django管理存儲的情況下,存儲在數據字段中的值看起來是這樣的:

(u'somedata',) 

及以下存儲在網址:

('',) 

請告訴我更有趣的是,當我查詢,捲曲的服務,看看有什麼是存儲,我得到如下:

{ 
    "result": { 
     "url": [ 
      "('',)" 
     ], 
     "data": [ 
      "(u'somedata',)" 
     ], 
     "id": 1 
    } 
} 

我很難過..任何想法可能會發生什麼?

回答

1

其實你的回答也不是應該預期的,注意你的字符串周圍的[],那些不應該在那裏。

你的錯誤是將這兩行後的逗號:

store.url = request.POST.get('url',""), 
store.data = request.POST['data'], 

Python會interprete要存儲在URL和數據的元組,和Django會轉換這些元組隱含字符串,導致行爲你看。只要刪除兩個逗號,你會沒事的。

+0

omg!謝謝 我想這就是當你開始使用json和python時得到的東西:D – 2010-06-19 12:15:13

相關問題