IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 开发过程中django和vue项目同时运行 -> 正文阅读

[Python知识库]开发过程中django和vue项目同时运行

开发过程中django和vue项目同时运行

背景

  • 大二下学期第一次接触前后端分离,在课程大作业项目中是后端人员,用的django框架,前端朋友是vue框架。当时前后端对接是队友做的,只是听说对接时要把vue打包,我还什么都不懂。
  • 大二和大三之间的暑假做了第二个django+vue的项目,我还是后端,这次接触了前后端对接,也接触了服务器部署。对接的方法是队友告知的,把前端npm run build一下,生成的dist文件夹放在后端项目里,设置一下setting.py
  • 暑期项目对接,让我对npm run build这一步耿耿于怀,太慢了,为什么不能直接一起跑呢??平时开发对接,其实还是在帮助调试,没到上线那一步,难以忍受每次build…然而小菜鸡没在网上搜到一起跑的办法,可能是大家觉得这太简单了不必有教程吧我哭???。但我作为小白qwq真的很需要它…摸索出来了决定总结一下qwq拙见

正题

创建项目

  • 建立虚拟环境

    virtualenv虚拟环境的使用 - 简书 (jianshu.com)这篇解释很详细。

    开发项目时如果用本地python进行开发,多项目维护时会有一些缺点:1. 修改此用户的库会影响系统上其他python软件;2. 不能使用某个包的多个版本;因此使用virtualenv维护多个分离的python环境,每个具有自己的库和包的命名空间。

    • pip install virtualenv

    • python -m venv reader-venv

      我的项目名是reader,虚拟环境名是reader-venv方便记忆。

    • 激活虚拟环境

      • MacOS、Linux系统 source reader-venv/bin/activate

      • Windows系统 .\reader-venv\Scripts\activate

        激活成功后命令提示符前面会有(reader-venv)前缀,表示是在一个名为(reader-venv)的python环境,这个环境下安装的包都会被安装在(reader-venv)环境下,系统的python环境不受影响;

        • 退出环境使用 deactivate命令
  • 虚拟环境下安装django、创建django项目

    • pip install Django

      就是在命令提示符有(reader-venv)前缀的情况下安装。

    • django-admin startproject reader

      我的django项目名reader

    • 之后就开始django项目开发了。

  • 把vue项目创建在django项目根目录下

  • pycharm开发django和vue项目

同时运行

  • django项目运行

    • 如果pycharm中显示的Configuration是django项目名reader,直接点击绿色的run图标就好。
    • 或者在下面开一个终端,命令行运行,设置运行端口也很方便。python manage.py runserver 0.0.0.0:8000 django项目默认端口是8000
  • vue项目运行

    • 如果pycharm中显示的Configuration是vue项目运行的dev或者serve,直接点击绿色的run图标就好。
    • 或者在下面开一个终端,命令行运行,npm run dev或者npm run serve
  • 我目前两个项目都是用pycharm的run运行的。django项目运行默认端口是8000,vue默认端口是8080,二者不冲突,如果冲突是没办法一起跑的。这个时候就需要改一下django或者vue的运行端口。

    • 更改django运行端口为8081:python manage.py runserver 0.0.0.0:8081

    • 更改vue运行端口为8090:在front目录下新建一个vue.config.js文件,文件内容为

      module.exports = {
        devServer: {
          port: 8090
        }
      }
      

      之后重新运行vue项目即可。
      image-20210925165044851

前后端数据对接

跨域问题

  • 刚刚两个项目一起运行,数据对接没有问题,还会出现跨域问题,报错如下

    Access to XMLHttpRequest at 'xxx' from origin 'xxx' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
    
    image-20210925165044851
  • 原因是同源策略限制协议+域名+端口相同,否则容易受到XSS、CSRF等攻击。解决跨域问题有多种方式,我这里采用的是后端解决。

    Django+vue跨域问题解决 - 简书 (jianshu.com)

    解决Django+Vue前后端分离的跨域问题及关闭csrf验证 - 云+社区 - 腾讯云 (tencent.com)

    • pip install django-cors-headers

    • 配置settings.py

      INSTALLED_APPS = [
          ...
          'corsheaders'...
       ] 
      
      MIDDLEWARE_CLASSES = (
          ...
          'corsheaders.middleware.CorsMiddleware', # 注意顺序
          'django.middleware.common.CommonMiddleware', 
          ...
      )
      #跨域忽略
      CORS_ALLOW_CREDENTIALS = True
      CORS_ORIGIN_ALLOW_ALL = True
      CORS_ORIGIN_WHITELIST = ()
      
      CORS_ALLOW_METHODS = (
          'DELETE',
          'GET',
          'OPTIONS',
          'PATCH',
          'POST',
          'PUT',
          'VIEW',
      )
      
      CORS_ALLOW_HEADERS = (
          'accept',
          'accept-encoding',
          'authorization',
          'content-type',
          'dnt',
          'origin',
          'user-agent',
          'x-csrftoken',
          'x-requested-with',
      )
      

成功~

  • 然后就成功啦~撒花撒花*★,°*:.☆
    image-20210925165044851
    image-20210925165044851
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-09-26 10:07:25  更:2021-09-26 10:09:21 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 15:51:06-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码