Django项目与Vue的集成

在现代Web开发领域,前后端分离已成为一种主流趋势。Django,作为一个强大的Python Web框架,以其丰富的功能和高度的可扩展性而受到开发者的青睐。而Vue.js,作为一个轻量级的渐进式JavaScript框架,以其简洁的API和灵活的组件系统成为前端开发的热门选择。将Django与Vue集成,可以充分利用两者的优势,构建出既高效又用户体验良好的现代Web应用。

一、为什么选择Django与Vue集成

  1. 前后端分离的优势

    • 独立开发:前端和后端可以独立进行开发,互不干扰,提高了开发效率。
    • 清晰的责任划分:前端负责页面渲染和用户交互,后端负责数据处理和业务逻辑,职责清晰。
    • 易于维护:由于前后端分离,当需要更新或修改功能时,可以只关注相关部分,降低了维护成本。
  2. Django与Vue的互补性
    • Django提供了强大的后端支持,如ORM、模板引擎、用户认证等。
    • Vue则以其简洁的语法和灵活的组件系统,为前端提供了丰富的表现力和交互性。

二、集成步骤

1. 创建Django项目

首先,使用Django的命令行工具创建一个新的Django项目。这包括设置数据库、用户认证等基础配置。

django-admin startproject myproject
cd myproject
python manage.py startapp myapp

2. 创建Vue项目

使用Vue CLI或任何其他工具创建一个Vue项目,并开发前端页面和组件。

vue create myvueapp
cd myvueapp
npm run serve # 开发模式运行Vue应用

3. 构建Vue项目

当Vue前端开发完成后,使用构建命令将Vue项目打包成静态资源。

npm run build

这将在Vue项目的dist目录下生成构建后的静态资源。

4. 集成Vue静态资源到Django

将Vue项目的dist目录中的内容复制到Django项目的某个静态文件目录下,例如myproject/static

修改Django的settings.py文件,确保静态文件目录被正确设置,并且Django在运行时能够访问到这些文件。

# settings.py

import os

TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'dist')], # 此处修改
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
] # 此处新增
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'dist/assets'),
] # 此处修改,静态资源地址
STATIC_URL = 'assets/'

5. 配置Django的URL路由

在Django的urls.py文件中,添加一个指向Vue首页的路由。这通常是一个TemplateView,它直接渲染Vue项目构建后的index.html文件。

# urls.py

from django.urls import path, re_path
from django.views.generic.base import TemplateView urlpatterns = [
# 其他路由
re_path(r'.*', TemplateView.as_view(template_name='index.html')) # 前端路由, 需要放在最后一行, 目的是404时显示Vue的自定义模板
]

注意:这里的index.html是Vue项目构建后生成的HTML文件,它通常位于dist目录下,但在Django中,你需要将其移动到Django的模板目录或作为静态文件来引用(步骤4已经设置)。

6. 运行Django服务器

使用Django的命令行工具启动开发服务器,并访问设定的根URL,你应该能看到Vue前端页面被成功渲染。

python manage.py runserver

7. 访问页面

访问默认端口:http://localhost:8000

Django项目与Vue的集成的更多相关文章

  1. django项目、vue项目部署云服务器

    目录 上线架构图 服务器购买与远程连接 安装git 安装mysql 安装redis(源码安装) 安装python3.8(源码安装) 安装uwsgi 安装虚拟环境 安装nginx(源码安装) vue项目 ...

  2. 项目部署Vue+Django(luffy)

    部署路飞学城 部署整体框架图: 1 熟悉linux操作 2 上传路飞学城项目到linux服务器 xftp上传到服务器 lrzsz工具 3 完成python3解释器的安装 在linux命令行模式下, 输 ...

  3. 直接运行vue+django项目

    直接运行vue+django项目 下载前后端代码 wget https://files.cnblogs.com/files/pyyu/luffy_boy.zip wget https://files. ...

  4. 在django中部署vue项目,不单独抽离dist文件

    1,在django项目下(app所在目录),新建vue项目,使用脚手架构建vue项目,vue create (项目名) 2,构建好以后,配置django: (1),配置settings: · 修改te ...

  5. vue项目和django项目交互补充,drf介绍,restful规范

    目录 一.vue项目与django项目的交互 二.drf(Django-restframework) 1. drf主要知识点 2. drf框架安装 3. web接口(WEB API) 4. restf ...

  6. 服务器部署 Vue 和 Django 项目的全记录

    本篇记录我在一个全新服务器上部署 Vue 和 Django 前后端项目的全过程,内容包括服务器初始配置.安装 Django 虚拟环境.python web 服务器 uWSGI 和反向代理 Nginx ...

  7. Vue+Django项目部署

    本地项目配置 1 复制 luffy/settings/dev.py为prop.py 修改luffy/settings/prop.py中以下几项 (1) allow_hosts ALLOWED_HOST ...

  8. python框架django中结合vue进行前后端分离

    一:创建django项目 1.django-admin startproject mysite # 创建mysite项目 2.django-admin startapp app01# 创建app01应 ...

  9. [译]如何使用 Docker 组件开发 Django 项目?

    原文地址:Django Development With Docker Compose and Machine 以下为译文 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包 ...

  10. 直接用nose进行django项目测试并输出html报告

    先说需求:1.测试django项目:2.打印测试报告(html格式)有以下几种测试方法:1.django自带的测试模块.在app目录下的tests.py文件中写测试类,类似这样: class MyTe ...

随机推荐

  1. (Redis基础教程之八) 如何在Redis中管理Sets

    如何在ubuntu18.04上安装和保护redis 如何连接到Redis数据库 如何管理Redis数据库和Keys 如何在Redis中管理副本和客户端 如何在Redis中管理字符串 如何在Redis中 ...

  2. python开发包之远程隧道链接sshtunnel

    缘起: 公司很多的数据库的链接都是本地连接或者指定ip地址可以访问, 如果你没有该ip权限, 但是你可以登录该数据库所在的服务器, 这个时候就可以使用ssh链接上这个服务器,以此为跳板进行数据库的链接 ...

  3. Echarts 提示组件

    1.开启指示器 默认情况下,指示器是关闭状态,如果需要开启,直接配置tooltip字段即可 var option = { tooltip:{}, } 2.指示器的触发类型 触发类型的字段为trigge ...

  4. solon 集成 rocketmq5 sdk

    使用 rocketmq5 是比较简单的事情.也有些同学对 sdk 原始接口会陌生,会希望有个集成的示例. <dependency> <groupId>org.apache.ro ...

  5. vue中this.$nextTick()

    this.$nextTick()是在下一次DOM更新后执行其指定回调函数 this.$nextTick(回调函数) 使用场景:在改变数据后,要对更新后的DOM进行操作时使用

  6. Redis应用—3.在购物车里的应用

    大纲 1.社区电商购物车的读多写多场景分析 2.购物车的复杂缓存与异步落库(Sorted Set + Hash -> hPut + zadd) 3.购物车异步落库与完整加入流程(缓存雪崩 + M ...

  7. 中电金信:向“新”而行—探索AI在保险领域的创新应用

    大模型的应用已经渗透到各个领域,并展现出惊人的潜力.在自然语言处理方面,大模型用于机器翻译.文本摘要.问答系统等:在计算机视觉领域,应用于图像识别.目标检测.视频分析等:此外,大模型也应用于语音识别. ...

  8. Redis 的DB多个数据库使用

    Redis 自己安装默认提供了16个数据库. 每个数据库都有一个id, 从 0 开始,(0,15). 不同的数据库中数据隔离保存.我们可以通过修改redis的配置文件进行修改数据库的数量. /etc/ ...

  9. Qt/C++监控推流设备推流/延迟极低/实时性极高/rtsp/rtmp推流/hls/flv/webrtc拉流/调整分辨率降低带宽

    一.前言 算下来这个推流的项目作品写了有四年多了,最初第一个版本只有文件点播的功能,用的纯QTcpSocket通信实现,属于比较简单的功能.由于文件点播只支持文件形式的推流,不支持网络流或者本地设备采 ...

  10. Qt交叉编译整理的几点说明

    关于交叉编译,对于初学者来说是个极难跨过去的砍(一旦跨过去了,以后遇到需要交叉编译的时候都是顺水推舟.信手拈来.),因为需要搭建交叉编译环境,好在现在厂家提供的板子基本上都是测试好的环境,尤其是提供的 ...