vue项目和django项目交互补充,drf介绍,restful规范

目录

  • 一、vue项目与django项目的交互
  • 二、drf(Django-restframework)
    • 1. drf主要知识点
    • 2. drf框架安装
    • 3. 接口
    • 4. restful接口规范
  • 三、django的CBV模型生命周期

一、vue项目与django项目的交互

  • vue中的发送ajax请求,其中的参数有:
created() {
            this.$axios({
                url: 'http://127.0.0.1:8000/test/',  // 请求地址
                method: 'post',  // 请求方式
                params: {  // 拼接参数
                    a: 1
                },
                data: {  // data数据包
                    x: 10
                },
                headers: {  // 请求头
                    authorization: 'abc.def.xyz',  // 请求头内容
                    token: 1,
                    owen: 2,
                    // 后台:request.META.get('HTTP_参数名全大写')
                }
            }).then(response => {  // then相当于success , 进行回调函数
                console.log('成功:', response.data)
            }).catch(error => {  // 错误捕捉
                console.log('失败:', error.response.data)  // error.response.data 错误信息
            })
        }
  • django后端的request的方法
request.META  # 获取请求头

CORS_ORIGIN_ALLOW_ALL = True  # 允许跨域

CORS_ALLOW_HEADERS = [  # 重写CORS_ALLOW_HEADERS,定义允许访问的请求头,前面的都是系统默认的要再加上
    "accept",
    "accept-encoding",
    "authorization",
    "content-type",
    "dnt",
    "origin",
    "user-agent",
    "x-csrftoken",
    "x-requested-with",

    "token",
    "owen",
]

二、drf(Django-restframework)

1. drf主要知识点

"""
1、接口:接口的概念、数据接口文档、接口规范(restful)、Postman接口测试工具

2、drf请求生命周期 - CBV

3、drf的基础组件:请求、响应、渲染、解析、异常

4、drf的序列化(核心):序列化、模型序列化、群操作序列化

5、drf的视图家族:视图类(常用)、视图工具类、工具视图类(常用)、视图集

6、drf的三大认证(核心):认证、权限、频率

7、drf的过滤:筛选、搜索、排序、分页、区间、自定义
"""

2. drf框架安装

"""
drf框架安装:
    1)drf是Django的插件,所以要提前按照Django
    2)终端中使用命令:python pip install djangorestframework
    3)使用drf时,要在settings中注册
"""

3. 接口

"""
什么是接口:规定了提交请求参数的请求方式、访问其可以获取响应的反馈数据的url链接
    四部分:url链接 + 请求方式 + 请求参数 + 响应数据
    详细解释:见小猿取经博客:https://www.cnblogs.com/xiaoyuanqujing/articles/11869745.html
"""

4. restful接口规范

"""
url链接:
    1)接口都是操作前后台数据的,所以需要保证数据的安全性
        采用https协议
    2)接口用来操作数据,与网址(操作页面)有区别,所以用特定的关键字表示接口
        api关键字
            - https://api.baidu.com
            - https://www.baidu.com/api
    3)接口操作的数据称之为 资源,在url中只体现 资源 名称(名词),不体现操作资源的方式动词
        常规资源接口
            - https://api.baidu.com/books/
            - https://api.baidu.com/books/(pk)/

        非常规接口 - 和某资源不是特别密切或是不止一种资源
            - https://api.baidu.com/login/
            - https://api.baidu.com/place/search/

    4)如果一个资源存在多版本结果,在url链接中要用特定符号来兼容多版本共存
        v1|v2
            - https://api.baidu.com/v1/books/
            - https://api.baidu.com/v2/books/

    5)群资源操作,一般还有额外的限制条件,如排序、限制调试、分页等等
        ?限制条件
            - https://api.baidu.com/v1/books/?ordering=-price&limit=3

请求方式
    6)五大请求方式
        get:获取单个或多个资源
            - https://api.baidu.com/books/
                群查,返回多个结果对象
            - https://api.baidu.com/books/(pk)/
                单查,返回单个结果对象

        post:新增单个或多个资源
            - https://api.baidu.com/books/
                单增,提交单个数据字典,完成单增,返回单个结果对象
                群增,提供多个数据字典的数组,完成群增,返回多个结果对象

        put:整体修改单个或多个资源
            - https://api.baidu.com/books/
                整体修改多个,提供多个数据字典的数组(数据字典中要包含主键),完成群改,返回多个结果对象
            - https://api.baidu.com/books/(pk)/
                整体修改单个,提供单个数据字典(主键在url中体现),完成单改,返回单个结果对象

        patch:局部修改单个或多个资源
            方式与put完全相同,不同的是:操作的资源如果有5个key-value键值对,put请求提供的字典必须全包含,但是patch提供的字典包含的键值对0~5个都可以

        delete:删除单个或多个资源
            - https://api.baidu.com/books/
                多删,提供多个资源主键数据,完成群删,不做任何资源返回(一般我们会返回结果信息:成功|失败)
            - https://api.baidu.com/books/(pk)/
                单删,不需要提供额外数据,完成单删,不做任何资源返回(一般我们会返回结果信息:成功|失败)

响应结果:
    7)响应对象中要包含网络状态码(网络状态信息和网络状态码捆绑出现,不要额外设置):
        1xx:基本信息
        2xx:成功 - 200基本 201新增成功
        3xx:重定向
        4xx:客户端错误 - 400错误请求;403请求无权限;404请求资源不存在
        5xx:服务端错误 - 500服务器错误

    8)数据状态码(一般都是前后台约定规则):
        0:成功
        1:失败 - 1xx:具体失败信息(要在接口文档中明确写出)
        2:无数据 - 2xx:具体无数据信息(要在接口文档中明确写出)

    9)数据状态信息(一般不仅仅是对数据状态码的解释,更多是对结果的描述,给前台开发者阅读的)

    10)数据结果(常量、数组、字典),如果有子资源(图片、音频、视频),返回资源的url链接

        {
            "status": 0,
            "msg": 'ok',
            "results": [{
                "name": "西游记",
                "img": "https://api.baidu.com/media/book/xyj.png"
            }]
        }
"""

三、django的CBV模型生命周期

  • django后端启动,执行urls文件中的各as_view()方法——》
  • 前端发送请求到后端对应的url——》
  • 后端根据请求方式调用类中对应的方法,再返回处理结果给前端

原文地址:https://www.cnblogs.com/Mcoming/p/12088696.html

时间: 2024-11-05 21:37:14

vue项目和django项目交互补充,drf介绍,restful规范的相关文章

django中cbv源码和restful规范

1 django 请求声明周期 -先进入实现了wsgi协议的web服务器---->进入django--->中间件--->路由--->视图--->取模板,取数据,用数据渲染模板--->返回模板的字符串--->在浏览器上看到页面了 2 开发模式(前后端分离和前后端不分离) -前后端不分离项目 -前后端分离项目 前端和后端通过json格式数据交互 3 cbv 源码分析 -FBV和CBV -执行流程: -路由如果这么配置:url(r'^test/', views.Test

python 记录Django与Vue前后端分离项目搭建

python 记录Django与Vue前后端分离项目搭建 参考链接: https://blog.csdn.net/liuyukuan/article/details/70477095 1. 安装python与vue 2. 创建Django项目 django-admin startproject ulb_manager 3. 进入项目并创建名为backeng的app cd ulb_manager   python manage.py startapp backend 4. 使用vue-cli创建v

django项目开始

第一个Django项目 创建Django项目: 用命令行的方式: 创建项目:打开终端,使用命令:django-admin startproject [项目名称]即可创建.比如: django-admin startproject first_project 创建应用(app):一个项目类似于是一个架子,但是真正起作用的还是app.在终端进入到项目所在的路径,然后执行python manage.py startapp [app名称]创建一个app. python manage.py start a

使用Nginx+uWSGI部署Django项目

1.linux安装python3环境 参考链接:https://www.cnblogs.com/zzqit/p/10087680.html 2.安装uwsgi pip3 install uwsgi ln -s /usr/local/python3/bin/uwsgi /usr/local/bin/uwsgi #建立软链接 uwsgi --version #检查安装成功 3.基于uwsgi+django项目部署 django项目目录结构(orange_manage为app): uwsgi --ht

Scrapy & Django项目

# 需求: 编写爬虫项目与Django项目详解和, 将爬取到的数据展示到前端页面上 # spider编写:import scrapyfrom dl.items import DlItemclass PSpider(scrapy.Spider): name = 'p' # allowed_domains = ['www.baidu.com'] start_urls = ['https://www.kuaidaili.com/free/'] def parse(self, response): #

Django项目与mysql交互进行数据迁移时报错:AttributeError: 'str' object has no attribute 'decode'

问题描述 Django项目启动,当我们执行命令 python manage.py makemigrations 出现如下错误: File "/usr/local/lib/python3.6/dist-packages/django/db/backends/mysql/operations.py", line 147, in last_executed_query query = query.decode(errors='replace') AttributeError: 'str' o

uwsgi+nginx部署django项目

1. 概念解析(wsgi协议,uwsgi协议,uWSGI) 参考:https://www.cnblogs.com/wspblog/p/8575101.html 1.1 现实世界的web请求: 1.2  wsgi协议,uwsgi协议和uWSGI a. WSGI(wsgi): 全称 Web Server Gateway Interface,或者 Python Web Server Gateway Interface ,是为 Python 语言定义的 Web 服务器和 Web 应用程序或框架之间的一种

python中django项目上线环境部署

django项目上线环境部署 第一步 安装python虚拟环境 1 安装虚拟环境virtualenv 2 安装virtualenvwrapper工具 3 确认virtualenvwrapper.sh脚本正常使用 4 确认用户环境变量配置文件,有virtualenvwrapper.sh的四行配置 WORKON_HOME=~/Envs VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages' VIRTUALENVWRAPPER_PYTHON=/op

Django 项目环境搭建

环境 mkvirtualenv -p python3.6 mytest # 创建虚拟环境 workon mytest # 进入虚拟环境 # 按照基础环境依赖 pip install django==1.11.11 pip install djangorestframework pip install pymysql 创建项目 """ 前提:在目标目录新建 mytest 文件夹 >: cd 建立的 mytest 文件夹 >: django-admin startpr