我尝试使用Tastypie将数据发送到基于Django的服务器。
我有这个模型
class Open(models.Model):
name=models.TextField()
和这个URLconf
open_resource=OpenResource()
urlpatterns = patterns('',
url(r'^api/', include(open_resource.urls)),
url(r'^admin/', include(admin.site.urls)),
)
当我运行tastypie curl命令时
curl --dump-header - -H "Content-Type: application/json" -X POST --data '{"name","awdawd"}' http://localhost:8000/api/open/
我收到错误
HTTP/1.0 400 BAD REQUEST
Date: Sat, 05 Apr 2014 12:18:48 GMT
Server: WSGIServer/0.1 Python/2.7.3
X-Frame-Options: SAMEORIGIN
Content-Type: application/json
{"error": ""}
我已经尝试了一切,但似乎无法实现这一目标。
有没有人对这个有线索?
提前多多感谢
答案 0 :(得分:2)
每当我提供无效的JSON数据时,我都会收到这个无用的错误。
正确 JSON格式为:
{"foo": "bar"} // correct!
[{"foo": "bar"}, {"fiz": "baz"}] // correct!
{"foo": "bar", "fiz": "baz"} // correct!
常见错误的例子:
{'foo': 'bar'} // error is using single quotes instead of double quotes
{foo: "bar"} // error is not using double quotes for "foo"
{"foo", "bar"} // error is using a comma (,) instead of a colon (:) ← Your error
更复杂的错误的例子:
[{"foo": "bar"}, {"fiz": "baz"},]
// error is using a comma at the end of a list or array
{"foo": "bar", "fiz": "baz",} // courtesy @gthmb
// error is using a comma at the end of the final key-value pair
认为您的JSON有效吗?请使用JSON validator进行仔细检查。
答案 1 :(得分:0)
由于tastypie适用于JSON数据,您还必须提供此格式。 试试这个数据:
--data '{"name": "myName"}'
此外,我不确定您如何构建您的网址,但我可以向您显示正在设置的网址:
v1_api = Api(api_name='v1')
v1_api.register(OpenResource())
urlpatterns = patterns('',
url(r'^api/', include(v1_api.urls)),
...
}
这会创建以下网址来访问您的资源:
/api/v1/open/?format=json
最终会出现这个卷曲命令:
curl --dump-header - -H "Content-Type: application/json" -X POST --data '{"name": "myName"}' http://localhost:8000/api/v1/open/
并且不要忘记在资源的元数据中添加授权和身份验证
OpenResource(ModelResource)
class Meta:
queryset = Open.objects.all()
authorization = Authorization()
默认情况下,tastypie使用ReadOnlyAuthorization设置资源,禁止发布,放置访问权限。
有关详情,请参阅文档:https://django-tastypie.readthedocs.org
希望这有所帮助,欢呼!