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 返回结果中提供链接
                    
                总结:必须说出来的就两条:路径都用名词表示,请求方式不同,表示不同的操作
  • 相关阅读:
    求集合的幂集【转】
    poj 1597 Uniform Generator【生成指定范围内所有随机数】
    OpenJudge计算概论-字符串排序
    OpenJudge计算概论-单词替换
    wikioi 1430 素数判定
    OpenJudge计算概论-字符串最大跨距
    wikioi 1012最大公约数和最小公倍数【根据最大公约数和最小公倍数求原来的两个数a、b】
    OpenJudge就算概论-最长单词2【寻找句子内部最长的单词】
    OpenJudge就算概论-统计字符数
    OpenJudge就算概论-过滤多余的空格
  • 原文地址:https://www.cnblogs.com/gukai/p/10778981.html
Copyright © 2011-2022 走看看