Python Web 框架 django-vue3-admin快速入门 django后台管理

0. 介绍

django-vue3-admin是一个基于Django4 + DRF +Vue 3 的前后端分离快速开发框架。内置权限管理、认证管理等功能,适合基于此开源项目快速开发各种类型的后台管理系统。

1. 准备工作

1.1 准备开发环境

如果已准备好开发环境,直接跳到下一章节"项目安装部署"。

  • Python 推荐版本 3.9
  • MySQL 推荐版本 8.0
  • nodejs 推荐版本 18.20.4(LTS)
  • (可选)Redis 如果在Windows上开发,推荐版本 5
  • 开发工具 推荐 VSCode

------下面以Windows 10操作系统为示例,搭建开发环境。

1.2 Windows 10 安装Python 3.9.13

Python下载地址

1.3 Windows 10 安装MySQL 8.0.39

MySQL下载地址

MySQL安装教程

1.4 Windows 10 安装Node.js 18.20.4

Node.js下载地址

1.5 Windows 10安装 Redis 5.0.14.1

Redis下载地址

1.6 Windows 10安装VSCode

VSCode下载地址

2. 项目安装部署

2.1 下载源码

下载master分支

复制代码
git clone https://gitee.com/huge-dream/django-vue3-admin.git

(可选)下载使用develop分支命令示例,develop分支bug较多:

复制代码
git clone https://gitee.com/huge-dream/django-vue3-admin.git -b develop

2.2 配置后端

进入目录django-vue3-admin\backend\conf,复制env.example.py文件,重命名为env.py。按需修改配置。

  • 数据库配置:如果使用MySQL 8.0 数据库,填写实际的地址、端口、用户名和密码。
  • Redis配置:如果使用Redis 5 或以上,填写实际的地址、密码。

2.3 启动后端

进入目录django-vue3-admin\backend,安装依赖库

复制代码
pip install -r requirements.txt

如果使用MySQL数据库,手动创建数据库django-vue3-admin。(如果使用SQLite数据库,请忽略)

复制代码
数据库名称:django-vue3-admin
字符集:utf8mb4
排序规则:utf8mb4_general_ci

执行数据库迁移

复制代码
python manage.py makemigrations
python manage.py migrate

初始化数据:向数据库写入初始化数据

复制代码
python3 manage.py init

初始化省市县数据

复制代码
python3 manage.py init_area

启动后端

复制代码
python manage.py runserver 0.0.0.0:8000

访问后端:打开浏览器,输出后端IP地址和端口。例如:http://127.0.0.0:8000/

如果启动成功,能看到Swagger的API界面。

2.4 配置前端

进入目录django-vue3-admin\web,开发环境配置文件.env.development,用于开发时使用。

复制代码
# 本地环境
ENV = 'development'

# 本地环境接口地址
VITE_API_URL = 'http://127.0.0.1:8000'

# 是否启用按钮权限
VITE_PM_ENABLED = true

进入目录django-vue3-admin\web,生产环境配置文件.env.production,用于生产部署时使用。

复制代码
# 线上环境
ENV = 'production'

# 线上环境接口地址
VITE_API_URL = '/api' # docker-compose部署不需要修改,nginx容器自动代理了这个地址

# 是否启用按钮权限
VITE_PM_ENABLED = true

2.5 启动前端

进入目录django-vue3-admin\web,安装依赖

复制代码
npm install --registry=https://registry.npm.taobao.org
或
npm install

启动前端

复制代码
npm run dev

访问前端:打开浏览器,输入前端IP地址和默认端口8080。示例:http://127.0.0.0:8080/

默认账号:superadmin 密码:admin123456

如果能登录成功,说明后端和前端都启动正常。

3. 排错指南

3.1 Unknown database错误

执行命令python manage.py makemigrations,出现错误Unknown database 'django-vue3-admin'

错误描述

复制代码
PS E:\python_workspace\django\dvadmin\django-vue3-admin\backend> python .\manage.py makemigrations
请先进行数据库迁移!
请先进行数据库迁移!
E:\python_workspace\django\dvadmin\venv\lib\site-packages\django\core\management\commands\makemigrations.py:158: RuntimeWarning: Got an error checking a consistent migration history performed for database connection 'default': (1049, "Unknown database 'django-vue3-admin'")
  warnings.warn(

解决方法:先手动创建django-vue3-admin数据库,再执行该命令。

3.2 MySQLdb.OperationalError错误

执行命令python manage.py migrate,出现错误MySQLdb.OperationalError: (1049, "Unknown database 'django-vue3-admin'")

错误描述

复制代码
E:\python_workspace\django\dvadmin\django-vue3-admin\backend> python .\manage.py migrate
Traceback (most recent call last):
  File "E:\python_workspace\django\dvadmin\venv\lib\site-packages\django\db\backends\base\base.py", line 289, in ensure_connection
    self.connect()
  File "E:\python_workspace\django\dvadmin\venv\lib\site-packages\django\utils\asyncio.py", line 26, in inner
    return func(*args, **kwargs)
  File "E:\python_workspace\django\dvadmin\venv\lib\site-packages\django\db\backends\base\base.py", line 270, in connect        
    self.connection = self.get_new_connection(conn_params)
  File "E:\python_workspace\django\dvadmin\venv\lib\site-packages\django\utils\asyncio.py", line 26, in inner
    return func(*args, **kwargs)
  File "E:\python_workspace\django\dvadmin\venv\lib\site-packages\django\db\backends\mysql\base.py", line 247, in get_new_connection
    connection = Database.connect(**conn_params)
  File "E:\python_workspace\django\dvadmin\venv\lib\site-packages\MySQLdb\__init__.py", line 121, in Connect
    return Connection(*args, **kwargs)
  File "E:\python_workspace\django\dvadmin\venv\lib\site-packages\MySQLdb\connections.py", line 193, in __init__
    super().__init__(*args, **kwargs2)
MySQLdb.OperationalError: (1049, "Unknown database 'django-vue3-admin'")

解决方法:先在MySQL手动创建django-vue3-admin数据库,再执行该命令。

3.3 Failed to build installable wheels for some pyproject.toml based projects (mysqlclient)

报错信息如下:

复制代码
FEST
      LINK : fatal error LNK1181: 无法打开输入文件"mariadbclient.lib"
      error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\BuildTools\\VC\\Tools\\MSVC\\14.16.27023\\bin\\HostX86\\x64\\link.exe' failed with exit code 1181
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building wheel for mysqlclient
Failed to build mysqlclient
ERROR: Failed to build installable wheels for some pyproject.toml based projects (mysqlclient)

解决方法:

可将mysqlclient==2.2.0替换为pymysql==1.0.2(当前最新稳定版)或更高兼容版本(如pymysql>=1.0.2)‌14。


操作步骤

  1. 修改requirements.txt文件 ‌:

    - mysqlclient==2.2.0 + pymysql>=1.0.2

  2. 使用 PyMySQL

    pip uninstall mysqlclient -y
    pip install pymysql==1.1.0

3.在 settings.py 中添加以下代码:

复制代码
import pymysql
pymysql.install_as_MySQLdb()  # 模拟 mysqlclient 的 API

3.4 Typerror: crypto$2.getRandomValues is not a function 错误

解决方法:切换node版本,从16切换到18

4. 参考资料

相关推荐
数据知道1 分钟前
PostgreSQL实战:详解如何用Python优雅地从PG中存取处理JSON
python·postgresql·json
ZH154558913114 分钟前
Flutter for OpenHarmony Python学习助手实战:面向对象编程实战的实现
python·学习·flutter
玄同76515 分钟前
SQLite + LLM:大模型应用落地的轻量级数据存储方案
jvm·数据库·人工智能·python·语言模型·sqlite·知识图谱
User_芊芊君子20 分钟前
CANN010:PyASC Python编程接口—简化AI算子开发的Python框架
开发语言·人工智能·python
白日做梦Q30 分钟前
Anchor-free检测器全解析:CenterNet vs FCOS
python·深度学习·神经网络·目标检测·机器学习
吃杠碰小鸡31 分钟前
高中数学-数列-导数证明
前端·数学·算法
kingwebo'sZone36 分钟前
C#使用Aspose.Words把 word转成图片
前端·c#·word
喵手44 分钟前
Python爬虫实战:公共自行车站点智能采集系统 - 从零构建生产级爬虫的完整实战(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·采集公共自行车站点·公共自行车站点智能采集系统·采集公共自行车站点导出csv
喵手1 小时前
Python爬虫实战:地图 POI + 行政区反查实战 - 商圈热力数据准备完整方案(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·地区poi·行政区反查·商圈热力数据采集
xjt_09011 小时前
基于 Vue 3 构建企业级 Web Components 组件库
前端·javascript·vue.js