1. 程式人生 > >Django的RestfulAPI框架RestFramework

Django的RestfulAPI框架RestFramework

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