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. 浏览器访问

序列化
序列化

相关文章: