drf框架和跨域基础

、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中写入以下三步配置
      • 第一步

INSTALLED_APPS = [ ... 'corsheaders', ... ]

      • 第二步

MIDDLEWARE = [ ... 'corsheaders.middleware.CorsMiddleware', 'django.middleware.common.CommonMiddleware', ... ]

      • 第三步

CORS_ORIGIN_ALLOW_ALL=True

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值