zoukankan      html  css  js  c++  java
  • DRF框架简介(第一天)

    1.drf框架全称 djangorestframework

    1.如何安装drf框架:

    pip3 install djangorestframework
    
    #drf框架其实就是一个app称之为drf
    #django 使用的是MTV模式, 可以写fbv 或cbv 
    #fbv是使用函数写的, 用的就是django原生的
    #cbv是使用类来写的, 主要使用drf  以后用到drf框架就是写cbv模式

    2. 如何使用drf框架

    # 在django项目中设置settings文件内注册rest_framework
    
    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'rest_framework',
        'app01.apps.App01Config',
    ]

    3. 在url层中使用cbv模式 urls配置文件的路由编写规范如下:

    from django.conf.urls import url
    from django.contrib import admin
    from app01 import views
    urlpatterns = [
        url(r'^admin/', admin.site.urls),
        # views.Books.as_view()函数执行结果也是个函数内存地址
        # url(r'^books/', views.book),
        url(r'^books/', views.Books.as_view()),
    ]
    #使用cbv模式后面需要加上.as_view()

    4. 在views层 编写视图函数模式如下需要继承APIView:

    #基于drf写的cbv
    from rest_framework.views import  APIView
    class Books(APIView):
    
        def get(self,request):
            #一旦继承APIView,request是经过处理的request,新的request
            # request.POST
            print(request.GET)
            print(request.POST)
            print(request.method)
            print(request.FILES)
            print(request.query_params)
            # print(request._request.GET)
            #把原来request取出来
            #django.core.handlers.wsgi.WSGIRequest 是原来request对象得类
            
    
            #这个data是post,put的内容,都在它里面,字典形式
            print(request.data)
    
            print(type(request._request))
            ll=[{'id':1,'title':'银瓶梅'},{'id':1,'title':'铜瓶梅'}]
            return  JsonResponse(ll,safe=False,json_dumps_params={'ensure_ascii':False})
        def post(self,request):
            return HttpResponse('ok')

    #总结: 一句话使用drf框架就使用cbv模式, 一定要遵守以上的规则,不然就无法正常运行

    2.什么是rest_ful规范

    1 resufl规范   非常重要
            -它是一个规范,面向资源架构
            -10条规范:
                -1 API与用户的通信协议,总是使用HTTPs协议
                -2域名 
                    https://api.example.com :尽量将API部署在专用域名(会存在跨域问题)
                    https://example.org/api/:API很简单(我推荐)
                -3 版本
                    -https://api.example.com/v1/
                    -把版本号放在请求头中
                    127.0.0.1/book/1
                -4 路径,视网络上任何东西都是资源,均使用名词表示(可复数)   必须说出来
                    -127.0.0.1/get_all_book/ 以前你这么写
                    -127.0.0.1/books/
                -5 method,通过请求方式来表示进行的操作
                    127.0.0.1/books/  get请求:表示获取所有图书
                    127.0.0.1/books/1  get请求:表示获取id为1的图书
                    127.0.0.1/books/  post请求:表示新增一本书
                    127.0.0.1/books/  delete请求:表示删除一本书
                    127.0.0.1/books/  put/patch请求:表示修改一本书
                -6 过滤,通过在url上传参的形式传递搜索条件
                -7 状态码
                    1 开头:服务器正在处理
                    2 开头:服务器处理成功
                    3 开头:重定向
                    4 开头:客户端错误
                    5 开头:服务器错误
                    -注意:在返回的数据中携带状态码
                -8 错误处理,应返回错误信息,error当做key
                -9 返回结果针对不同操作,返回数据格式要求
                -10 返回结果中提供链接
                    
                总结:必须说出来的就两条:路径都用名词表示,请求方式不同,表示不同的操作
  • 相关阅读:
    用wamp配置的环境,想用CMD连接mysql怎么连
    Mysql删除表
    MySQL创建表
    Leetcode 130. Surrounded Regions
    Leetcode 111. Minimum Depth of Binary Tree
    Leetcode 110. Balanced Binary Tree
    Leetcode 98. Validate Binary Search Tree
    Leetcode 99. Recover Binary Search Tree
    Leetcode 108. Convert Sorted Array to Binary Search Tree
    Leetcode 105. Construct Binary Tree from Preorder and Inorder Traversal
  • 原文地址:https://www.cnblogs.com/gukai/p/10778981.html
Copyright © 2011-2022 走看看