django后端(Django+Vue3,最小路径实践)

django后端(Django+Vue3,最小路径实践)
Django+Vue3,最小路径实践

学习的时候查了网上的Django+Vue3案例,资料都比较老,在借助Ai工具的辅导下翻新了案例,总算是走通了python web全栈的最小路径(做了查询和新增打通,本地的,没部署服务器),Django用的是5.2.4版本(25年7月发布),Vue用的是3.5.24版本(25年11月发布)类型选的TypeScript。因为前后端都是自己写,所以就把前后端联调的大部分操作在前面就配置了,而不是到后面再去处理。

过程中通过和kimi、豆包反复“唠嗑”,体验上来说kimi的空格幻觉比较重,我代码粘给它,就说我有哪个地方多了空格导致代码错误,实际根本没空格问题(豆包就没这个幻觉)。豆包的思考过程时间会稍微多点,默认会弹问题思考结构的思路,等待体验上没Kimi舒服,但是解决问题的能力比Kimi更好。如果用户提问的提示词比较粗或缺乏,以及提问没有切到关键点上,都会出现多轮问答而无法获得有效意见的情况。

一、Django基础准备

1、创建Django项目,取名DjangoVue,使用现有环境;

2、创建数据库,在Navicat的localhost上创建新数据库按照如图配置;

3、安装mysqlclient,通过python解释器安装mysqlclient,这是database设为mysql的前提;

4、更改项目settings文件中的数据库设置

5、执行数据库迁移,python manage.py migrate

6、运行检查 python manage.py runserver

二、Django应用创建

1、创建后端应用 python manage.py startapp backend 在项目的settings中检查APP注册。

2、创建数据模型:

① 在应用的models.py中创建模型;

② 创建迁移文件,修改数据库;

③ mysql上检查新创建的表;

3、创建序列化文件,在应用下新建serializers.py文件,序列化数据模型(for接口)。

4、创建接口,进入应用的views.py文件

① 导入rest_framework家的三件套、导入模型表、导入序列化文件;

② 创建新增接口、查询接口

5、配置应用路由,为应用创建urls.py文件

① 导入path库、导入数据模型;

② 设置urlpatterns,添加书籍查询、添加地址、对应视图;

6、配置项目路由,在项目的urls.py文件

① 导入path、include、TemplateView

② 给路由地址包个api,include指向应用的urls.py

③ 设置根路径返回vue打包的模板index,html

④ 设置re_path为后端找不到地址时托底。

7、安装Django跨域支持的库

① 进入Django项目所在文件夹(项目主体文件的上级)

② 在命令行中输入:pip install djangorestframework django-cors-headers

8、配置跨域设置,在项目的settings.py文件

① 在INSTALLED_APPS中查看是否有了corsheaders,

如果没有就补上;

② 在MIDDLEWARE中增加跨域的中间件,放在第一行;

③ 添加CORS_ALLOWED_ORIGINS设置跨域对象;

9、配置静态文件收集,在项目的settings.py文件

① 设置STATIC_URL用于前端请求标识;

② 设置STATIC_ROOT用在collectstatic后存放文件目录,生产环境服务器找本地目录用;

③ 设置STATICFILES_DIRS用于设定开发环境下静态文件收集地址;

④ TEMPLATES中增加DIRS设置,给BASE_DIR配上Django自身模版目录templates、配上vue打包后的目录frontend_dist

三、创建Vue项目

1、用vite创建Vue3

① 进入Djnango项目所在文件夹,输入:

npm create vite@latest 项目名

② 进入交互式选择,先选择vue,再选择typescript

③ 点击http://locahost:5173/浏览器跳出vue初始效果

2、安装vue项目所需依赖,进入VUE项目文件夹位置的命令行窗口,

① 输入npm install 用于安装基础依赖;

② 输入npm install axios vue-router@4 element-plus 安装异步、路由、ui库;

3、构建工具配置,在vite.config,ts文件中,在默认内容上增加

① extensions指定导入文件时可以省略的文件后缀列表;

② base设置相对路径;

③ build构建打包相关配置,outDir设置打包目录,assetsDir设置静态资源子目录;

4、项目结构准备

① 在SRC文件夹下新建api、router、views三个文件夹;

② 在api文件夹下,创建book.js;

③ 在router文件夹下,创建index.ts;

④ 在views文件夹下,创建BookAdd.vue、BookList.vue页面组件。

5、路由设置,在index.ts中(src/router文件夹下)

① 导入createRouter、createWebHistory

② 创建路由规则数组,设置根路径、重定向路径;设置导航按钮对应的懒加载路径;

③ 创建路由实例并导出,设置路由模式为createWebHistory,将路由规则数组给到路由实例;

6、接口处理,在book.js文件中

1、导入axios库;

2、设置异步请求的基础api地址;

3、设置书本列表查询、添加的箭头函数,并用export暴露出去;

7-1、页面组件---BookList.vue文件中

·页面结构部分:

① 使用el-table绑定数据books;

② 添加id、book_name、author三列,允许author为空;

·逻辑与数据部分:

① 导入响应式变量ref、钩子函数onMounted、导入listBook接口函数;

② 创建响应式变量books,默认为空;

③ 把数据请求放入钩子函数,获取成功时将data给books。无论成败都做console.log

7-2、页面组件---BookAdd.vue文件中

·页面结构部分:

1、使用el-form绑定form;

2、添加两个输入框,一个提交按钮。输入框分别绑定form的title、author字段,提交按钮绑定sumbit函数,按钮名为“保存”;

·逻辑和数据部分:

django后端(Django+Vue3,最小路径实践)

1、导入响应式变量reactive、addBook接口函数;

2、创建响应式表单数据form,初始title、author为空;

3、创建sumbit函数,调用接口,传递form,成功后弹出提示;

7-3、页面组件-在APP.vue中

① 使用el-menu构建导航,设置横向布局,具体导航对象配置好路由路径;

② 添加router-view放置路由视图容器,承载导航的具体组件;

8、入口文件处理,在在main.ts中

① 创建vue应用实例;

② 导入UI组件库ElementPlus、全局样式、路由实例、根组件;

③ 创建应用实例.挂载路由插件.全局注册组件库.挂载应用到#app元素;

四、联调与打包

1、前后端联调

① 后端项目执行:python manage.py runserver启动后端,浏览器访问http://127.0.0.1:8000/books

② 在前端项目执行:npm run dev启动前端,浏览器访问 http://localhost:5173,测试查询与新增;

2、前端打包构建,进入vue项目所在目录

① 运行npm run build # 生成 dist

② xcopy /E /I dist ..\frontend_dist #将打包结果放在执行目录

3、Django生产构建,进入Django项目所在目录

① 收集部署前的静态资源,仅本地验证时可省略;

python manage.py collectstatic --noinput

② 运行Django项目,python manage.py runserver浏览器访问http://127.0.0.1:8000/books 实现查询和新增;

完成Django项目集成Vue

文章版权声明:除非注明,否则均为边学边练网络文章,版权归原作者所有