第1章 簡介
Django rest framework 是一套基於django框架編寫restful風格API的組件
第2章 簡單瞭解下都有哪些特點
2.1serializers(序列化)
就是將複雜的數據結構json化,支持ORM和非ORM數據源的序列化
2.2authentication(身份認證)
快速實現支持auth1和auth2的方式的權限驗證
2.3request and response(請求與響應)
擴展了常規的HttpResquest和TemplateResponse
2.4viewset and routers(視圖和路由)
第3章 開始一個簡單的項目
3.1創建好Django項目後,修改settings文件
INSTALLED_APPS= [
…….
'rest_framework',
'app',
]
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'restful',
'USER': 'root',
'PASSWORD': '123465',
'HOST': 'local.dev',
'PORT': '3306',
}
}
3.2配置urls文件
from django.conf .urls import url, include
urlpatterns = [
path('admin/', admin.site.urls),
path(r'^test/', include('app.urls')),
]
3.3編寫model層:
from django.dbimport models
# Create your models here.
class Restful(models.Model):
name= models.CharField(max_length=30)
passwd = models.CharField(max_length=10)
def__str__(self):
returnself.name
3.4初始化數據庫
python manage.py makemigrations
python manage.py migrate
3.5編寫序列化模塊:
from rest_frameworkimport serializers
from .models import Restful
class RestfulSerializer(serializers.ModelSerializer):
classMeta:
model = Restful
fields = ("id", "name", "passwd")
3.6編寫視圖views.py
from django.shortcutsimport render
# Create your views here.
from rest_framework import status, generics
from rest_framework.response import Response
from rest_framework.views import APIView
from .models import Restful
from .serializer import RestfulSerializer
class RestfulView(APIView):
defget(self, request, format=None):
data = Restful.objects.all()
serializer = RestfulSerializer(data, many=True)
returnResponse(serializer.data)
defpost(self, request, format=None):
serializer = RestfulSerializer(data=request.data)
ifserializer.is_valid():
serializer.save()
returnResponse(serializer.data, status=status.HTTP_201_CREATED)
else:
returnResponse(serializer.data, status=status.HTTP_400_BAD_REQUEST)
3.7編寫app路由urls.py:
from django.conf.urlsimport url
from . import views
urlpatterns = [
url(r'^api/$', views.RestfulView.as_view(), name='restful'),
]
3.8進行測試:
插入數據:
➜ ~ curl -X POST http://localhost:8000/test/api/ -d "name=jiangby&passwd=123456"
{"id":1,"name":"jiangby","passwd":"123456"}%
➜ ~ curl -X POST http://localhost:8000/test/api/ -d "name=test&passwd=123456"
{"id":2,"name":"test","passwd":"123456"}%
查看數據: