django RestFrameWork的简单测试
描述
写道
在icgoo中添加restframework,以订单模型Order做为资源制定接口
主要参考官方提供的接口例子:BlogPosts
主要参考官方提供的接口例子:BlogPosts
官方例子:http://django-rest-framework.org/examples/blogpost.html
操作
settings中INSTALLED_APPS加入:
'django.contrib.staticfiles',
'djangorestframework',
'restframework',
orders/resources.py
from djangorestframework.resources import ModelResource
from djangorestframework.reverse import reverse
from satchmo_store.shop.models import Order
from satchmo_store.contact.models import Contact
class ContactResource(ModelResource):
"""
A Contact
"""
model = Contact
fields = ('first_name', 'email')
class OrderResource(ModelResource):
"""
A Order Post
"""
model = Order
fields = ('site', 'po_number', 'addressee', 'phone', 'url', 'city','contact')
ordering = ('-po_number',)
def url(self, instance):
return reverse('order',
kwargs={'id': instance.id},
request=self.request)
def contact(self, instance):
return reverse('contact',
kwargs={'order': instance.id},
request=self.request)
order/urls.py
from django.conf.urls.defaults import patterns, url
from djangorestframework.views import ListOrCreateModelView, InstanceModelView
from restframework.order.resources import OrderResource, ContactResource
urlpatterns = patterns('',
url(r'^$', ListOrCreateModelView.as_view(resource=OrderResource), name='order-root'),
url(r'^(?P<id>[^/]+)/$', InstanceModelView.as_view(resource=OrderResource), name='order'),
url(r'^(?P<order>[^/]+)/contact/$', ListOrCreateModelView.as_view(resource=ContactResource), name='contact'),
url(r'^(?P<order>[^/]+)/contact/(?P<id>[^/]+)/$', InstanceModelView.as_view(resource=ContactResource)),
)
测试页面
order list
order instance
接口的调用
写道
相当与每一个url就是一个接口函数,你可以有post,get,delete操作
如order list的url:http://127.0.0.1:8000/rest/order/
还有一个id为110的order实例的url:http://127.0.0.1:8000/rest/order/110/
如order list的url:http://127.0.0.1:8000/rest/order/
还有一个id为110的order实例的url:http://127.0.0.1:8000/rest/order/110/
写道
对于url:http://127.0.0.1:8000/rest/order/110/
相当于就是这个order实例的接口函数
现用curl命令测试该接口
相当于就是这个order实例的接口函数
现用curl命令测试该接口
通过get获取该对象的数据
$curl -X get http://127.0.0.1:8000/rest/order/110/
{"city": "", "po_number": "22", "site": {"domain": "store.icinfo.net", "name": "store.icinfo.net"}, "contact": "http://127.0.0.1:8000/rest/order/110/contact/", "phone": "22", "addressee": "22", "url": "http://127.0.0.1:8000/rest/order/110/"}
你还可以获取不同的数据类型,如json,html,txt,xml
$curl -X get http://127.0.0.1:8000/rest/order/110/?format=xml
<root><city></city><po_number>22</po_number><site><domain>store.icinfo.net</domain><name>store.icinfo.net</name></site><contact>http://127.0.0.1:8000/rest/order/110/contact/</contact><phone>22</phone><addressee>22</addressee><url>http://127.0.0.1:8000/rest/order/110/</url></root>
通过Put修改对象数据
$curl -X put -d "po_number=33&delivery_location=mainland&street1=22&contact=1&phone=11&addressee=22&country=22&site=1&unit=RMB" http://127.0.0.1:8000/rest/order/110/
{"city": "", "po_number": "33", "site": {"domain": "demo.icgoo.net", "name": "IC\u8d2d\u5546\u57ce"}, "contact": "http://127.0.0.1:8000/rest/order/110/contact/", "phone": "11", "addressee": "22", "url": "http://127.0.0.1:8000/rest/order/110/"}
通过Delete删除对象
$curl -X delete http://127.0.0.1:8000/rest/order/110/