返回顶部
首页 > 资讯 > 精选 >怎么使用django和vue项目搭建实现前后端通信
  • 616
分享到

怎么使用django和vue项目搭建实现前后端通信

2023-07-05 04:07:20 616人浏览 薄情痞子
摘要

本文小编为大家详细介绍“怎么使用Django和Vue项目搭建实现前后端通信”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么使用djanGo和vue项目搭建实现前后端通信”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知

本文小编为大家详细介绍“怎么使用DjangoVue项目搭建实现前后端通信”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么使用djanGo和vue项目搭建实现前后端通信”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

django 环境搭建

创建django骨架项目

django-admin startproject yiyan_WEBauto

创建应用

python manage.py startapp myapp

试着启动项目,验证环境OK

python3 manage.py runserver

基础配置

admin.py

数据库的具体表注册到后台来便于管理,改一次后再也不用动

from django.contrib import admin# ReGISter your models here.import inspect,sysfrom myapp.models import *cls_members = inspect.getmembers(sys.modules[__name__],inspect.isclass)for name,cls in cls_members:    admin.site.register(cls)

settings.py

项目全局配置,初始化配置

**ALLOWED_HOSTS = [‘*’] **

白名单,配置到这里的主机可以访问该服务,*代表所有主机都可以访问我们的django服务

INSTALLED_APPS 应用列表增加自己创建的应用

INSTALLED_APPS = [    'django.contrib.admin',    'django.contrib.auth',    'django.contrib.contenttypes',    'django.contrib.sessions',    'django.contrib.messages',    'django.contrib.staticfiles',    'myapp',]

MIDDLEWARE 中间件列表,添加cors中间件,解决跨域问题

pip install django-cors-headers

MIDDLEWARE = [    'django.middleware.security.SecurityMiddleware',    'django.contrib.sessions.middleware.SessionMiddleware',    'corsheaders.middleware.CorsMiddleware', #第三方解决跨域头问题的中间件    'django.middleware.common.CommonMiddleware',    # 'django.middleware.csrf.CsrfViewMiddleware',    'django.contrib.auth.middleware.AuthenticationMiddleware',    'django.contrib.messages.middleware.MessageMiddleware',    # 'django.middleware.clickjacking.XFrameOptionsMiddleware',]CORS_ORIGIN_ALLOW_ALL = True #加上允许所有跨域

国际化Internationalization

LANGUAGE_CODE = 'zh-hans'TIME_ZONE = 'Asia/shanghai'

前端项目搭建

前后端分离,因为一个人开发,为了方便维护,前端项目直接放在django项目下

安装vue-cli

npm install -g @vue/cli@3.12.1

创建前端项目

cd django项目的根目录,vue create 项目名

vue create front

以下报错是因为当前目录没有找到package.JSON ,cd到前端项目根目录front再执行即可

found 23 vulnerabilities (2 low, 16 moderate, 5 high)
  run `npm audit fix` to fix them, or `npm audit` for details
  
D:\myproject\yiyan_webauto
$ npm audit fix
npm ERR! code EAUDITNOPjsON
npm ERR! audit No package.json found: Cannot audit a project without a package.json

npm ERR! A complete log of this run can be found in:
npm ERR!     D:\Program Files\nodejs\node_cache\_logs\2022-03-01T04_21_12_141Z-debug.log

D:\myproject\yiyan_webauto
$ npm audit
npm ERR! code EAUDITNOPJSON
npm ERR! audit No package.json found: Cannot audit a project without a package.json

npm ERR! A complete log of this run can be found in:
npm ERR!     D:\Program Files\nodejs\node_cache\_logs\2022-03-01T04_21_18_162Z-debug.log

创建时候选什么

- ? Please pick a preset:  选第二个:自定义生成vue项目。
  default (babel, eslint) 
❯ Manually select features 
- ? Check the features needed for your project: (Press <space> to select, <a> to toggle all, <i> to invert selection) 选择一些插件.
选择bable和router
- Use history mode for router? (Requires proper server setup for index fallback in production) (Y/n) 选n。
- ? Where do you prefer placing config for Babel, PostCSS, ESLint, etc.?  
选package.json
- Save this as a preset for future projects? (y/N)  保存成默认设置
选y,下次创建的时候在第一步会多出这个默认配置的选项,回车直接按照默认配置创建项目,选n,每次创建都会一步步选一遍

前端项目结构

front  dist 打包生成目录      static    来自public/static,static是项目创建后手工创建的文件夹          css    手工创建              app.xxx.css    来自/src/App.vue里面的style标签的内容        js            about.xxx.js    /src/views/About.vue被webpack打包后的js文件                about.xxx.js.map    webpack打包信息            app.xxx.js        /src/views/Home.vue被webpack打包后的js文件                app.xxx.js.map        webpack打包信息            chunk-vendors.xxx.js                chunk-vendors.xxx.js.map                  node_modules  vue框架需要的依赖包  public  静态资源,这里有一个index.html 模板,作为合成最终dist/index.html的骨架存在  src    assets 存放一些静态文件,现在我们不用这个,之后全部存到public/static下    components 小型组件存放位置        HelloWorld.vue    子组件    views 大型组件,母体组件存放位置        About.vue 母组件        Home.vue 母组件,里面引入了子组件HelloWorld.vue,所以在访问Home页面的时候会看到HelloWorld页面的内容    App.vue 作为所有的.vue的一个主管存在,存放uri(/和/about),里面的样式会影响全局(id=app的div)    main.js : 作为打包过程必要的主脚本,负责把id=app的div进行填充,里面的代码会影响全局    router.js: 路由管理器,根据path(App.vue里面的uri)映射具体页面(component:Home),Home就是views文件夹里面的vue母组件Home.vue  vue.config.js

main.js

import Vue from 'vue'import App from './App.vue'   # 引入App.vue,取名为Appimport router from './router'Vue.config.productionTip = false# 把App.vue填充到public/index.html的id=app的div里面new Vue({  router,  render: h => h(App)}).$mount('#app')

页面上呈现的内容是怎么来的?这里只说明vue部分

0 dist是从public复制来的,里面的index有个id=app

1 main.js负责把App.vue挂载到index页面id=app的div里面

2 App.vue里面有<router-view/>,路由/在router.js里映射到Home.vue

3 假如Home里面又加载了components的子组件,那再找到子组件

4 最终看到页面上呈现的内容

曲线救国打通vue和django

vue适配django

public底下手动创建static ,用来存放js/css/图片等资源,让vue打包的时候会把静态文件统一存到这里,然后让django的静态文件从这里取,怎么实现说让vue打包的时候在dist生成static文件夹,在front目录下创建文件vue.config.js,内容为:

module.exports = {assetsDir:'static'}

这里需要特别特别说明:旧版本会有vue.config.js,新版本已经没有了

dist vue打包生成的包,django要从dist里面拿到index.html和static的所有静态资源,实际上django就是跟dist里面的index.js交互,而不会管没vue项目的其他内容,
vue项目就没用了么?
当然不是,vue在和后端联调还是用的打包前的,而在django项目,只用打包后的dist

django适配vue

django和vue前后端分离项目,交互流程就是这样:
用户-电脑浏览器-django-dist包 -> vue-cli前端开发用的

打通这个流程要做两个事情

第一,想办法把路由配置成从vue项目中的index.html进行关联上

从前:urls -> views.py -> .html的

现在:urls -> .html

具体操作:

urls.py中:

from django.views.generic import TemplateViewpath('index/',TemplateView.as_view(template_name='index.html'))    # 加了这一行,就是把django的index这个uri指向front/dist/index.html页面,而不是再去django的views里面  这一步只是项目搭建阶段,验证django和vue的打通,后续开发,前端直接请求后端域名接口就好了settings.py中,修改TEMPLATES的DIRS,其他不变:TEMPLATES = [    {        ...        'DIRS': ['front/dist'], # 指定django模板路径,让django在读取html时从前端项目front的打包目录dist取index.html        ...    }

第二,想办法把vue项目内的static文件夹下的静态资源关联上。

settings.py中:

STATICFILES_DIRS=[    os.path.join(BASE_DIR,"front/dist/static"),]

打包

进入前端项目根目录front下,执行npm run build

打包完,可以启动django服务,访问看下是不是能访问到vue的页面index.html

通过django服务访问vue的index.html

Http://127.0.0.1:8000/index/#/about

怎么使用django和vue项目搭建实现前后端通信

左边的是django的路由,右边的是vue的路由,自动拼接

读到这里,这篇“怎么使用django和vue项目搭建实现前后端通信”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网精选频道。

--结束END--

本文标题: 怎么使用django和vue项目搭建实现前后端通信

本文链接: https://lsjlt.com/news/349360.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 怎么使用django和vue项目搭建实现前后端通信
    本文小编为大家详细介绍“怎么使用django和vue项目搭建实现前后端通信”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么使用django和vue项目搭建实现前后端通信”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知...
    99+
    2023-07-05
  • django+vue如何实现前后端通信
    这篇文章主要介绍“django+vue如何实现前后端通信”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“django+vue如何实现前后端通信”文章能帮助大家解决问题。django 环境搭建创建dja...
    99+
    2023-07-05
  • 怎么用websocket实现前后端通信
    这篇文章主要介绍了怎么用websocket实现前后端通信,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 websocket通信是很好玩的,...
    99+
    2024-04-02
  • 使用Django怎么实现前后端登录
    这期内容当中小编将会给大家带来有关使用Django怎么实现前后端登录,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。前端登录1. login.vue<template>  &...
    99+
    2023-06-14
  • Django + Taro 前后端分离项目实现企业微信登录功能
    目录前言两种方式思路后端代码企业微信应用配置前端代码参考资料前言 还是最近在做的一个小项目,后端用的是Django搭配RestFramework做接口,前端第一次尝试用京东开源的Ta...
    99+
    2024-04-02
  • springboot vue项目管理前后端怎么实现编辑功能
    这篇文章主要介绍了springboot vue项目管理前后端怎么实现编辑功能的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇springboot vue项目管理前后端怎么实现编辑功能文章都会有...
    99+
    2023-06-30
  • 使用 vue-cli怎么搭建一个vue项目
    使用 vue-cli怎么搭建一个vue项目,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。 一、 安装 node.js首先需要安装no...
    99+
    2024-04-02
  • 怎么实现Vue前端分页和后端分页
    本篇内容介绍了“怎么实现Vue前端分页和后端分页”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1:前端手写分页(数据量小的情况下)前端需要使...
    99+
    2023-06-22
  • Vue前端项目自适应布局怎么实现
    这篇文章主要介绍“Vue前端项目自适应布局怎么实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Vue前端项目自适应布局怎么实现”文章能帮助大家解决问题。一、单位尺寸px%vw、vh: 窗口em: ...
    99+
    2023-07-02
  • 怎么使用webpack手动搭建vue项目
    这篇文章主要讲解了“怎么使用webpack手动搭建vue项目”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用webpack手动搭建vue项目”吧!一、前提条件在开始以下步骤之前需先安装...
    99+
    2023-07-05
  • Thinkphp5.0 安装使用Workerman实现websocket前后端通信,后端主动推送消息到前端
    安装使用Workerman实现websocket前后端通信,后端主动推送消息到前端,实现后端有数据更新时,前端页面自动更新数据。 我使用的是基于Thinkphp5.0的ThinkCMF5.0。 安装:...
    99+
    2023-08-31
    websocket 前端 php
  • flask和vue前后端分离项目部署的代码怎么写
    本篇文章为大家展示了flask和vue前后端分离项目部署的代码怎么写,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。前段时间开发了一个项目, 我后端用的是flask框架写接口,前端用的是vue框架,项...
    99+
    2023-06-25
  • vue多页面前端项目的命令怎么使用
    今天小编给大家分享一下vue多页面前端项目的命令怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。首先,让我们创建一个基...
    99+
    2023-07-06
  • 前端项目中的Vue、React错误监听怎么实现
    本篇内容介绍了“前端项目中的Vue、React错误监听怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、 Vue 错误监听题目:如何...
    99+
    2023-06-30
  • vue前端重构computed及watch组件通信怎么使用
    这篇文章主要介绍“vue前端重构computed及watch组件通信怎么使用”,在日常操作中,相信很多人在vue前端重构computed及watch组件通信怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答...
    99+
    2023-06-30
  • vue项目怎么实现前端预览word与pdf格式文件
    今天小编给大家分享一下vue项目怎么实现前端预览word与pdf格式文件的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。页面上...
    99+
    2023-07-05
  • 怎么用Docker搭建Laravel和Vue项目的开发环境
    本篇内容主要讲解“怎么用Docker搭建Laravel和Vue项目的开发环境”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用Docker搭建Laravel和...
    99+
    2024-04-02
  • Springboot项目中运用vue+ElementUI+echarts前后端交互实现动态圆环图(推荐)
    目录如何运用vue+echarts前后端交互实现动态饼图前言一、环境配置1.1 安装acharts1.2 全局引用二、圆环图前端实现 2.1 先在vue页面添加渲染盒子2....
    99+
    2024-04-02
  • 使用Django怎么在后端实现按日期查询
    这期内容当中小编将会给大家带来有关使用Django怎么在后端实现按日期查询,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。与单个时间进行比较筛选start的取值按照不同的筛选条件改变start =...
    99+
    2023-06-06
  • vue项目用后端返回的文件流实现docx和pdf文件预览
    目录实现效果图docx-preview文件预览pdf文件预览写这篇文章的目的,是因为我比较懒,想把代码记录一下,方便日后使用;哈哈,如果你也需要,也可以复制粘贴啊,为了方便自己和需要...
    99+
    2023-05-16
    vue 文件预览 vue 文件流实现文件预览
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作