• vue前后端分离


    axios前后端交互

    安装

    一定要安装到`项目目录下

    cnpm install axios
    
    配置

    在main.js中配置

    //配置axios
    import  axios from 'axios'
    Vue.prototype.$axios = axios;
    
    在组件中发送ajax请求
    created(){
        //发送axios请求
        this.$axios({
            url:this.$settings.base_url+'/cars/',
            method:'get',
            params:{
            }
            }).then(response => { //请求成功成功之后执行
            this.cars = response.data;
            }).catch(error => {  //当网络状态码为4xx,5xx时执行
            console.log(error.response)
        });
    },
    

    错误信息都在error.response中

    params:{}url拼接参数:任何请求都可以携带

    data:{}数据包参数 get请求无法携带data参数

    CORS跨域问题(同源策略)

    django默认只对同源做响应(同源策略),存在跨域问题.

    同源

    http协议相同,ip服务器地址相同,app应用端口相同,三个都相同才叫同源.

    跨域

    http,ip,post三个有一个不同,就是跨域.

    解决跨域问题

    1)Django按照cors模块:
    	>: pip install django-cors-headers
    	
    2)在settings注册模块,配置中间件:
        INSTALLED_APPS = [
            ...
            'corsheaders'
        ]
        MIDDLEWARE = [
            ...
            'corsheaders.middleware.CorsMiddleware'
        ]
    
    3)在settings开启允许跨越:
    	CORS_ORIGIN_ALLOW_ALL = True
    

    js全局配置

    assets的js文件下设置settings全局js文件

    export default{
        base_url:'http://127.0.0.1:8000'
    }
    

    mian.js中配置全局js

    //配置全局js
    import settings from '@/assets/js/settings'
    Vue.prototype.$settings = settings;
    

    然后就可以在全局使用

    this.$axios({
        url:this.$settings.base_url + `/car/${pk}/`
        }).then(response =>{
        this.car = response.data
        }).catch(error =>{
        console.log(error.response)
    })
    
  • 相关阅读:
    分布式事务-第一刀
    Qt
    自描述C++部分面试题集
    读书笔记6.21
    STL vector容器 和deque容器
    C++ STL框架
    C++ 多态
    C++ 虚继承
    C++ 类的继承和派生
    C++ 类中的函数重载
  • 原文地址:https://www.cnblogs.com/agsol/p/12078267.html
Copyright © 2020-2023  润新知