1、入门
1.1 参考blog
官方文档:http://www.django-rest-framework.org/tutorial/quickstart/#quickstart
yuan的Blog:http://www.cnblogs.com/yuanchenqi/articles/8719520.html
alice的Blog:https://www.cnblogs.com/alice-bj/p/9228402.html
1.2 restful协议
restful协议
---- 一切皆是资源,操作只是请求方式
----book表增删改查
/books/ books
/books/add/ addbook
/books/(\d+)/change/ changebook
/books/(\d+)/delete/ delbook
----book表增删改查 url里面不能出现动词!!
/books/ -----get books ----- 返回当前所有数据
/books/ -----post books ----- 返回提交数据
/books/(\d+)-----get bookdetail ----- 返回当前查看的单条数据
/books/(\d+)-----put bookdetail ----- 返回更新数据
/books/(\d+)-----delete bookdetail ----- 返回空
1.3 安装
pip install django
pip install djangorestframework
2. 序列化方法
序列化是什么? QuerySet-->list-->json
2.1 restdemo
model
from django.db import models class Book(models.Model): title=models.CharField(max_length=32) price=models.IntegerField() pub_date=models.DateField() publish=models.ForeignKey("Publish",on_delete=models.CASCADE) authors=models.ManyToManyField("Author") def __str__(self): return self.title class Publish(models.Model): name=models.CharField(max_length=32) email=models.EmailField() def __str__(self): return self.name class Author(models.Model): name=models.CharField(max_length=32) age=models.IntegerField() def __str__(self): return self.name
url
from django.contrib import admin from django.urls import path from app01 import views urlpatterns = [ path('admin/', admin.site.urls), path('publishes/', views.PublishView.as_view()), ]
view
from django.shortcuts import render,HttpResponse # Create your views here. from django.views import View from .models import Publish import json class PublishView(View): def get(self,request): # QuerySet-->vales取值--->list--->json publish_list = list(Publish.objects.all().values("name","email")) return HttpResponse(json.dumps(publish_list)) def post(self,request): pass
database
data生成与迁移
python manage.py makemigrations
python manage.py migrate
运行django项目
2.2 方式1 :list()
2.3 方式2:model_to_dict(obj)
2.4 方式3:django serializers
2.5 方式4 :restframework serializers (推荐)
2.6 code
from django.shortcuts import render,HttpResponse # 为queryset,model对象做序列化 from rest_framework import serializers # rest_framework的序列化组件 class PublishSerializers(serializers.Serializer): # 对哪些字段序列化 name = serializers.CharField() email = serializers.EmailField() from django.views import View from .models import Publish import json class PublishView(View): def get(self,request): # QuerySet--->list--->json # 序列化方式1 # list() # publish_list = list(Publish.objects.all().values("name","email")) #return HttpResponse(json.dumps(publish_list)) # 序列化方式2 # model对象转换为dict # from django.forms.models import model_to_dict # publish_list = Publish.objects.all() # temp = [] # for obj in publish_list: # # temp.append(model_to_dict(obj)) # # # temp.append({ # # "name":obj.name, # # "email":obj.email # # }) # # return HttpResponse(temp) # # 序列化方式3 # django的序列化组件 # from django.core import serializers # publish_list = Publish.objects.all() # ret = serializers.serialize("json",publish_list) # # return HttpResponse(ret) # 序列化方式4 rest_framework的序列化组件 publish_list = Publish.objects.all() ret = PublishSerializers(publish_list,many=True) return HttpResponse(ret.data) def post(self,request): pass