Django的RestfulAPI框架RestFramework
阿新 • • 發佈:2018-05-29
sts ria ssi pass pro sage reat 視圖 method
Django的Restful-API框架
安裝框架
#sudo pip3 install django
#sudo pip3 install markdown
#sudo pip3 install djangorestframework
啟動項目
#django-admin.py startproject MyRestSite
#cd MyRestSite
#python manage.py makemigrations
#python manage.py migrate
#python manage.py createsuperuser
配置文件settings.py
# Application definition
INSTALLED_APPS = (
‘django.contrib.admin‘,
‘django.contrib.auth‘,
‘django.contrib.contenttypes‘,
‘django.contrib.sessions‘,
‘django.contrib.messages‘,
‘django.contrib.staticfiles‘,
‘rest_framework‘,
)
REST_FRAMEWORK = {
‘DEFAULT_PERMISSION_CLASSES‘: [
‘rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly‘
]
}
編寫模型
models.py
class TableName(models.Model):
xxx = xxxx(xxx=xxx)
class Meta:
xxxxxxx
模型序列化
serializers.py
from rest_framework import serializers
class TableNameSerializer(serializers.ModelSerializer):
class Meta:
model = TableName
fields = (‘xxxx‘, ‘xxxxx‘ , ‘xxxx‘, ‘xxxxx‘)
視圖路由
views.py
from rest_framework.renderers import JSONRenderer
from rest_framework import serializers
class JSONResponse(HttpResponse):
"""
用於返回JSON數據.
"""
def __init__(self, data, **kwargs):
content = JSONRenderer().render(data)
kwargs[‘content_type‘] = ‘application/json‘
content=‘{"xxxxx":‘+content+‘}‘
super(JSONResponse, self).__init__(content, **kwargs)
@csrf_exempt
def xxxxxxxxx(request,xxxxxxxxxx):
if request.method == ‘GET‘:
...
return JSONResponse(serializer.data)
路由轉發
urlpatterns = [
...
url(r‘^api/x/xxxxx/xxxxx$‘, xxxxxxxs),
]
測試運行
#python3 ./manage.py runserver
# curl -H ‘Accept: application/json; indent=4‘ -u username:password http://127.0.0.1:8000/apiurls/
Django的RestfulAPI框架RestFramework