、DRF框架
1、介绍
django rest framework -------------django的rest框架
2、安装及项目配置
pip install djangorestframework
3、认识drf框架
- 基本类
- 视图 APIView 父类View
- APIView继承django的View,重新做了封装
- Response 是继承django的 HTTPResponse,增强呢功能,可以直接返回字典列表类型,类似JsonResponse
- 可以直接获取form表单数据 或字典数据
- 使用data属性来获取 POST或PUT提交的数据
- 使用query_params/GET属性来获取url地址后携带大的参数
from django.shortcuts import render from .models import Book # 导入drf的APIView
from rest_framework.views import APIView # 导入drf的 Response 响应 from rest_framework.response import Response class BookAPIView(APIView): def post(self, request): # post 请求通过data 可以获取表单数据或json格式值 name = request.data.get('name') print(name) return Response({'msg': 'OK'}) def get(self, request): # get请求 通过 query_params获取传递的参数 id = request.query_params.get('id') print(id) queryset = Book.objects.all() # 创建一个序列化实例 many是多个, queryset是个查询集,有多个对象 # ser = BookSerializer(queryset, many=True) ser = BookModelSerializer(queryset, many=True) # 获取序列化的结果 data = ser.data print(data) return Response(data)
、同源
1、定义
协议 + IP + 端口号 都一样的url称为同源,来自同一服务器
2、同源策略
浏览器为了安全起见,有一个约束,要求浏览器执行的脚本只能同源访问。默认如果访问的不是同源,则拦截这个访问
3、CORS 跨域资源共享
通过cors来实现跨域
二、跨域解决办法
- 前端跨域
- vue.config.index.js中配置代理,避免跨域
proxyTable: { '/api': { 'target': 'http://localhost:8000', // 目标地址 我们的django地址 "changeOrigin": true, //要不要改变源 要 "pathRewrite": { // 重写路径 把/api 转成空字符串 '^/api': '' } } },
- 后端跨域
- 先下载模块 cors-headers
pip install django-cors-headers
-
- 然后再setting.py中写入以下三步配置
- 第一步
- 然后再setting.py中写入以下三步配置
INSTALLED_APPS = [ ... 'corsheaders', ... ]
-
-
- 第二步
-
MIDDLEWARE = [ ... 'corsheaders.middleware.CorsMiddleware', 'django.middleware.common.CommonMiddleware', ... ]
-
-
- 第三步
-
CORS_ORIGIN_ALLOW_ALL=True