100天 cmdb最后一天
#RESTful API
- 定义规范 如get就是请求题
- 面向资源编程 把网络任何东西都当作资源
#给一个url,根据方法的不同对资源做不同的操作
#返回结果和状态码
http://www.baidu.com/order/
method:
- GET
- POST
- PUT
- DELETE
#Django REST framework
为什么使用REST framework
1.前后端分离的业务需要搭建API
2.基于DJango快速开发REST api
![]()
1. pip3 install djangorestframework
2. 创建app01
3. setting 中加入
INSTALLED_APPS = [
'rest_framework'
]
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': [
'rest_framework.permissions.IsAdminUser',
],
'PAGE_SIZE': 10
}
4. app01/models.py
class Publisher(models.Model):
name = models.CharField(max_length=32,verbose_name="名称",unique=True)
address = models.CharField(max_length=128,verbose_name="地址")
def __str__(self):
return self.name
class Meta:
verbose_name = "出版社"
verbose_name_plural = verbose_name
5. makemigrations migrate
6. 创建超级用户 admin注册Publisher 增加数据
7. 项目/urls.py
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^publishers/', views.publisher_list),
]
8. app01/views.py
from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.
from app01 import models
def publisher_list(request):
queryset = models.Publisher.objects.all()
##方式一: 列表里套字典
# data = []
# for i in queryset:
# p_tmp = {
# "name":i.name,
# "address":i.address
# }
# data.append(p_tmp)
##方式二:
#缺点 图片的字段无法转换为字典
data = []
from django.forms.models import model_to_dict # model 对象 转换成 字典 方式
for i in queryset:
data.append(model_to_dict(i))
#方式三:djangorestframework 自提供
#需要在app01下创建serializers.py文件
from app01 import serializers
serializer = serializers.PublisherSerializer(queryset,many=True)
import json
return HttpResponse(json.dumps(data),content_type="application/json")
9. app01/serializers.py
from rest_framework import serializers
from app01 import models
class PublisherSerializer(serializers.ModelSerializer):
class Meta:
model = models.Publisher
fields = (
"id",
"name",
"address"
)
9. 浏览器访问
序列化
序列化