【问题标题】:unusual django admin behavior when storing string values存储字符串值时不寻常的 django 管理员行为
【发布时间】:2010-06-19 11:31:42
【问题描述】:

使用 django trunk r13359 和 django 活塞,我创建了一个存储字符串值的小型 restful 服务。

这是我用来存储字符串的模型:

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

我使用 curl 发布以下数据:

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

这是作为 django-piston 处理程序的一部分处理存储的代码

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 admin 查看存储的实例时,存储在数据字段中的值看起来像这样:

(u'somedata',)

以下内容存储在url中:

('',)

更有趣的是,当我使用 curl 查询服务以查看存储的内容时,我得到以下信息:

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

我被难住了..有什么想法吗?

【问题讨论】:

    标签: python django django-piston


    【解决方案1】:

    实际上你的反应也不应该是预期的,注意你的字符串周围的 [],那些不应该在那里。

    您的错误是在这两行之后添加逗号:

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

    Python 会解释你想在 url 和 data 中存储一个元组,django 会将这些元组隐式转换为字符串,从而产生你看到的行为。去掉两个逗号就可以了。

    【讨论】:

    • 天哪!谢谢,我想这就是你开始使用 json 和 python 时得到的结果:D
    猜你喜欢
    • 2016-10-13
    • 2014-12-20
    • 2014-02-26
    • 1970-01-01
    • 2020-08-15
    • 2023-03-25
    • 2012-07-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多