当前位置: 首页 > news >正文

luffy项目前端创建、配置、解决跨域问题、后端数据库迁移

前端

创建前端vue

  1. 使用vue-cil创建前端
  2. 将无用的东西删除

​配置

跟后端交互:axios

  1. 安装插件:cnpm install -S axios
  2. main.js中写
    import axios from "axios";
    Vue.prototype.$axios = axios
    
  3. 后续使用就直接this.$axios即可

操作cookie: vue-cookies

  1. 安装插件:cnpm install -S vue-cookies
  2. main.js中写
    import cookies from 'vue-cookies'
    Vue.prototype.$cookies = cookies;
    
  3. 后续使用就直接this.$cookies即可

ui库:elementui

  1. 安装插件:cnpm install -S element-ui
  2. main.js中写
    import ElementUI from 'element-ui';
    import 'element-ui/lib/theme-chalk/index.css';  // 全局都会有这个css的样式
    

去除标签默认样式

  1. 创建文件src/assets/css/global.css里编写全局样式
    /* 声明全局样式和项目的初始化样式 */
    body, h1, h2, h3, h4, h5, h6, p, table, tr, td, ul, li, a, form, input, select, option, textarea {margin: 0;padding: 0;font-size: 15px;
    }a {text-decoration: none;color: #333;
    }ul {list-style: none;
    }table {border-collapse: collapse; /* 合并边框 */
    }
    
  2. main.js中导入:import '@/assets/css/global.css'

全局配置文件

配置一个全局配置方便改地址

  1. 创建src/assets/js/setting.js写全局配置
    export default {BASS_URL:'http://127.0.0.1:8000/'
    }
    
  2. main.js
    import settings from "@/assets/js/settings";Vue.prototype.$setting = settings
    

跨域问题

前后端打通时回出现出现CORS policy 错误

原因是因为浏览器有同源策略

同源策略(Same origin policy)是一种约定,约定了请求的url地址,必须与浏览器上的url地址处于同域上,也就是域名,端口,协议相同,如果违背了这个约定,浏览器就会报错
请求正常发送成功,服务端也响应了,但是回来到浏览器的时候,报错,被浏览器的同源策略拦截了

只有前后端分离的web项目,才会出,才需要解决跨域问题

CORS(跨域资源共享) ⟶ \longrightarrow 是一个后端技术 ⟶ \longrightarrow 后端只需要在响应头中加入固定的响应头,前端就不禁止了

CORS请求分成两类(浏览器发送请求之前判断)
简单请求:只发送一次请求,就是真正的请求
非简单请求:先发送一个options 预检请求,服务端如果写了cors,再发送真正的请求,如果没有写cors,浏览就不再发送真正的请求了
只要同时满足以下两大条件,就属于简单请求。
  1. 请求方法是以下三种方法之一:
    • HEAD
    • GET
    • POST
  2. HTTP的头信息不超出以下几种字段:
    • Accept
    • Accept-Language
    • Content-Language
    • Last-Event-ID
    • Content-Type:只限于三个值application/x-www-form-urlencoded、multipart/form-data、text/plain

解决跨域问题

中间键解决跨域问题

  1. 定制一个中间键
    from django.utils.deprecation import MiddlewareMixin
    class CORSMiddleWare(MiddlewareMixin):def process_response(self, request, response):# 简单请求response['Access-Control-Allow-Origin'] = '*'  # 允许所有客户端# 如果只允许客户端则在后面的字符串中写完整的网址# 非简单请求if request.method == 'OPTIONS':# res['Access-Control-Allow-Methods'] = 'DELETE,PUT'response['Access-Control-Allow-Methods'] = '*'response['Access-Control-Allow-Headers'] = '*'return response
    
  2. 在设置文件中配置中间键

第三方解决跨域

参考链接:在Django中解决跨域问题

后端数据库迁移

使用auth拓展表,需要在数据库迁移前写好表模型

  1. 搭建表模型

    from django.db import models
    from django.contrib.auth.models import AbstractUserclass User(AbstractUser):# 扩写,加入手机号,加入头像mobile = models.CharField(max_length=32, unique=True)# 需要pillow包的支持  pip install pillowicon = mobile.ImageField(upload_to='icon', default='icon/default.png')class Meta:db_table = 'luffy_user'verbose_name = '用户表'verbose_name_plural = verbose_namedef __str__(self):# 获取实例化对象时返回return self.username
    
  2. 配置设置

    AUTH_USER_MODEL = 'user.User'
    
  3. 进行迁移

    • python manage.py makemigrations
    • python manage.py migrate
http://www.lryc.cn/news/193206.html

相关文章:

  • 电商数据API接口:新服务下电商网站、跨境电商独立站,移动APP的新型拉新武器
  • 多线程并发篇---第十一篇
  • JVM第六讲:JVM 基础 - Java 内存模型引入
  • 机房安全管理制度
  • 【自然语言处理】— 隐马尔可夫模型详解、例解
  • 运行的 akrun 会打印信息到控制台,如何取消打印 -- chatGPT
  • 【React】03-React面向组件编程2
  • 【python编程】python无法import模块的一种原因分析
  • vue3.0与vue2.0的区别
  • 09_Webpack打包工具
  • 小程序 | 小程序后端用什么语言开发比较好
  • Websocket升级版
  • 基于音频SOC开发板的主动降噪ANC算法源码实现
  • 【Pytorch】深度学习之损失函数
  • 3.4 构造方法
  • 代码随想录
  • 2核4G游戏服务器推荐(阿里云/腾讯云/华为云)
  • SQL标识列实现自动编号的步骤和技巧以及优势
  • 【Debian】报错:su: Authentication failure
  • 我测试用的mark down教程
  • 网络编程基础知识总结——IP,端口,协议
  • 【LeetCode力扣】297. 二叉树的序列化与反序列化
  • Linux寄存器+Linux2.6内核进程调度队列+命令行参数+环境变量
  • 组合数(2)获取C(n,k)组合数列表的QT实现
  • SparkCore编程RDD
  • VBA技术资料MF69:添加和删除工作表中的分页符
  • 数字技术助力智慧公厕,让公厕变身为全新创新应用
  • electron 升级 v22 遇到问题
  • 跟我学c++中级篇——Pimpl
  • [补题记录] Atcoder Beginner Contest 295(E)