本文适合对有
Python
语言有一定基础的人群,希望利用Python
做更多有意思的事情,比如搭建个人博客,记录自己的所思所想,或者想找一个项目实践前后端分离技术等等。跟着本文可以了解和运行项目,本项目是在Window 10 Professional
系统下开发
大家好,我是落霞孤鹜
,上一篇介绍了开发博客的背景、技术栈,并介绍了如何搭建开发环境。这一篇介绍后端和前端的基础框架代码初始化,基于Django和Vue初始化项目框架代码,跑通Hello world。
一、后端框架代码搭建
后端 Python
代码通过 PyCharm
能比较快速的搭建 Django
项目,因为在 PyCharm
的专业版里面,已经内置了 Django
框架
1.1 通过 PyCharm
初始化 Django
项目
- 通过
pip
安装Django
包
为了更好的兼容性,我们自己安装 Django 2
版本,不采用最新版本。在命令行输入如下命令:
1 | bash复制代码pip install django==2.2.23 |
- 在
PyCharm
的首屏界面,点击New Project
对话框,在左侧选择Django
,在右侧的Location
中选择项目地址,项目命令为Blog
并将我们之前安装的Python
路径选择为Interpreter
,如下图:
3. 点击Create,等待 PyCharm
执行创建。
如果选择的
Python Interpreter
环境中没有安装Django
,PyCharm
会自动安装Django
最新版本,由于我们已经安装了Django,PyCharm
会自动使用环境中的Django
版本
完成后左侧的导航区域会自动生成Django框架项目所需的文件,结构如下图:
- 在
Pycharm
右下角点击Terminal
,通过pip
安装Django Rest Framework
1 | bash复制代码pip install djangorestframework==3.12.4 |
- 验证框架是否可以运行
运行点击 PyCharm
右上角的运行按钮,如果正常,在PyCharm的运行控制台会打印如下信息
1 | bash复制代码Performing system checks... |
打开 Edge 或 Chrome 浏览器,输入 http://127.0.0.1:8000
,回车,如下图,说明框架搭建成功
1.2 配置 Django Rest Framework
- 启用
Django Rest Framework
在 Blog
文件夹下,打开 settings.py
文件,在 INSTALLED_APPS
的 list
中增加 rest_framework
1 | python复制代码INSTALLED_APPS = [ |
- 在
settings.py
中增加Rest Framework
的配置
1 | python复制代码REST_FRAMEWORK = { |
1.3 配置 Sqlite
数据库
- 在项目路径下,创建data文件夹
- 在
settings.py
中修改DATABASES
中default
下的NAME
的值,增加data
路径,接入如下
1 | python复制代码DATABASES = { |
1.4 调整项目结构
- 修改
Blog
文件夹名称为project
通过 PyCharm
自动生成的项目结构,会自动生成一个和项目名称一样的子文件夹,为了有效的组织后端的各个模块,这里我们将自动生成的 Blog
文件夹修改为 project
操作如图:
点击 Refector
,然后点击左下角的 Do Refector
完成修改。
2. 在 settings.py
文件中,将 ROOT_URLCONF
中的 Blog
修改为 project
1 | python复制代码ROOT_URLCONF = 'project.urls' |
- 在
settings.py
文件中,将TEMPLATES
中的DIRS
的值修改为[BASE_DIR + '/templates']
1 | python复制代码TEMPLATES = [ |
- 创建
common
APP,在terminal
中输入如下命令:
1 | bash复制代码python manage.py startapp common |
- 完成后,整个项目结构如下图:
1.5 编写 User
对象的 API
- 在
common/models.py
中编写基础模型抽象类AbstractBaseModel
用来帮助构建所有业务模型自动增加创建人,创建时间,修改人,修改时间
1 | python复制代码from django.contrib.auth.models |
其中两个属性的入参需要说明
auto_now_add=True
表示在新增的时候,自动将该字段的值设置为当前时间auto_now=True
表示在记录更新的时候,自动设置为当前时间abstract = True
表示该类是抽象类,不需要生成物理模型
- 在
common/models.py
中重写User
类
由于我们需要在博客中记录注册用户的昵称,头像等扩展信息,因此 Django
自带的User
模型字段无法满足,所以通过集集成Django
提供的 AbstractUser
来扩展,通过Meta类中定义我们想要的表名 blog_user
。
1 | python复制代码class User(AbstractUser, AbstractBaseModel): |
如果我们不单独定义,则会用
Django
中设定的表名,这样不利于我们有效的识别和管理数据库中的表
- 在
common
下新增serializers.py
,在serializers.py
中新增类UserSerialiazer
,继承Rest Framework
提供的serializers.ModelSerializer
1 | python复制代码from rest_framework import serializers |
这里定义需要在 API
接口中出现的字段,包括新增、修改、查询接口字段。
- 在
common/views.py
文件中,编写UserViewSet
类,继承Rest Framework
提供的viewsets.ModelViewSet
1 | python复制代码from rest_framework import viewsets, permissions |
这里只需要 Override 三个类属性,查询集合 queryset
、序列器类 serialiazer_class
,权限校验 permission_classes
。
我们这里设置权限校验为 AllowAny
,表示这个对象下的接口可以不用登录就可以访问,这么做的目的是为了下面测试接口的连通性。
- 修改
project/settings.py
配置
在 INSTALL_APPS
中增加 common
1 | python复制代码INSTALLED_APPS = [ |
新增一行代码,定义User
鉴权对应的模型,因为我们改写的默认的 User
表
1 | python复制代码# User |
- 定义 API 路由规则
在 common
下新增urls.py
中,并增加如下代码,这里需要定义 app_name = 'common'
,用于路由 Rest Framework
区别路由
1 | python复制代码from rest_framework import routers |
在 project/url
中引入 common
APP中的路由,并加入 Rest Framework
用户鉴权路由api-auth/
1 | python复制代码from django.contrib import admin |
1.6 模型迁移和配置
- 通过
Django
做模型迁移
在 PyCharm
提供的 Terminal
中输入如下命令,完成模型创建
1 | bash复制代码python manage.py makemigrations |
- 配置数据库管理工具
这个时候,可以在 data
文件下看到生成的 Sqlite
数据库文件 db.sqlite3
,和我们在 project/settings.py
的 DATABASE
中定义的名称一致。
双击这个文件,PyCharm 会自动在右侧的 Database
工具类中创建一个 Sqlite
的数据库记录。点击下图中表红的按钮,进入数据库配置页面。
点击下方的 Download missing driver files
,下载 Sqlite
驱动,修改 name
为 blog
,在Schemas
标签页中,勾选 All shemas
,点击确定。
然后右侧就出现了我们刚刚通过 migrate
命令生成的表:
标红的表就是我们在 common/models.py
中定义的 User
类映射出来的表,其他的表是 Django
框架内置的表,主要用在管理权限,Session
,日志等。
1.7 创建管理员账号
这里通过 Django
自带的命令完成管理员账号的创建,在 PyCharm 提供的 Terminal 中,输入如下命令:
1 | bash复制代码python manage.py createsuperuser --email admin@example.com --username blog-admin |
依据提示输入密码 12345678.Abc
,确认输入密码,回车,完成管理员账号的创建
1.8 测试API
- 点击 PyCharm 右上角的运行按钮
- 打开浏览器,在地址栏中输入
http://127.0.0.1:8000/
看到如下界面,说明API配置已经成功
- 测试用户查询接口
点击上图中的 http://127.0.0.1:8000/user/
1 | json复制代码HTTP 200 OK |
得到如下图界面,说明接口已经完全编写成功,恭喜你,记得给你自己一个大拇指哦
1.9 Django Rest Framework
官方英文示例教程
1 | http复制代码https://www.django-rest-framework.org/tutorial/quickstart/ |
二、前端框架代码搭建
在介绍篇,我们已经安装了 Vite
,这里我们就通过 Vite
来初始化 Vue
的项目
2.1 通过 Vite
初始化 Vue
项目
- 在
C:\Users\Administrator
路径下,创建文件夹VSCodeProjects
1 | bash复制代码cd C:\Users\Administrator |
- 在
VscodeProjects
文件夹下创建blog
项目
1 | bash复制代码cd VSCodeProjects |
- 用
VS Code
项目
打开 C:\Users\Administrator\VSCodeProjects\Blog
文件夹,可以看到,通过 Vite
模板,已经帮我们生成好了所有基础文件,包括 TypeScript
相关的依赖和 shims
文件。
2.2 依赖安装
- 安装
Less
依赖
这里的 -D
参数表示是在开发阶段的依赖,上线运行时不需要该依赖。
1 | bash复制代码yarn add less@4.1.1 -D |
- 安装
Element-Plus
依赖
1 | bash复制代码yarn add element-plus |
- 安装基础依赖,并运行
在 VS Code 中,通过快捷键 Ctrl + J
打开 Terminal,输入如下命令:
1 | bash复制代码yarn |
- 在浏览器中输入地址
http://localhost:3000/
, 效果如下
三、前后端代码联调
前后端联调时,需要先在前端配置路由,Vite
代理,Axios
网络请求。
3.1 配置 Axios
- 安装
Axios
,在 VS Code 的Terminal 中执行命令
1 | bash复制代码yarn add axios |
- 配置
vite.config.ts
在项目根目录下,修改 vite.config.ts
,代码如下:
1 | typescript复制代码import vue from '@vitejs/plugin-vue' |
- 配置
Axios
实例
在 src
目录下,新建文件夹 api
,在 api
下新建文件 index.ts
,编写如下代码:
1 | typescript复制代码import axios, {AxiosRequestConfig, AxiosResponse} from "axios"; |
- 编写请求接口的代码
在 api
下新建文件 service.ts
,编写如下代码:
1 | typescript复制代码import request from "./index"; |
3.2 创建用户列表页面
修改在 src
下创建 App.vue
,在文件里面编写如下代码,获取用户列表的接口调用,调用后得到的数据加载到表格中展示,同时通过分页展示列表。
1 | vue复制代码<template> |
3.3 配置 Router
- 安装
vue-router
,在 VS Code 的Terminal 中执行命令
1 | bash复制代码yarn add vue-router@next |
- 配置
route
在项目 src
目录下面新建 route
目录,并添加 index.ts
文件,文件中添加以下内容
1 | typescript复制代码import {createRouter, createWebHistory, RouteRecordRaw} from "vue-router"; |
3.4 调整 main.ts
增加 Element-Plus
的组件,加载 router
,代码如下:
1 | typescript复制代码import { createApp } from 'vue' |
3.5 测试界面
- 在 PyCharm 中启动后端服务
- 在 VS Code 中启动前端
1 | bash复制代码yarn dev |
- 在浏览器中输入
http://127.0.0.1:8080
得到如下效果
到这一步,我们已经完成了前后端联调,第一个接口已经通过界面方式完成调用和数据展示,给自己一个赞哦。
四、代码纳入Git
版本管理
还记得我们在第一篇文章中创建的代码仓库吧,现在我们要把刚刚创建的前端代码和后台代码提交到代码仓库中。
这里以后端为例,我之前是在Gitee上创建了一个公开仓库:https://gitee.com/Zhou_Jimmy/blog-backend.git
,现在就把后端代码提交到这个仓库中。
命令在 PyCharm 提供的 Terminal 中输入
4.1 配置本地的 git
信息
1 | bash复制代码git config --global user.name "Zhou_Jimmy" |
在设置的时候记得修改成你自己的名字和邮箱哦
4.2 本地代码初始化git
1 | bash复制代码git init |
在设置的时候,记得修改成你自己的仓库地址
4.3 拉取远程仓库上的代码
1 | bash复制代码git pull origin master |
4.4 建立忽略文件
在项目根路径下增加或编辑 .gitignore
文件,忽略不用加入到版本管理的文件,文件中的内容可以参考 Gitee 或 GitHub 提供的模板,这里主要增加 PyCharm 配置信息的文件夹
1 | ini复制代码.idea |
如果是前端代码,则增加这么一行
1 | ini复制代码.vscode |
4.5 提交代码
4.5.1 通过 Git
命令提交
可以通过如下命令完成提交,最后需要你输入仓库账号和密码,完成后,代码就提交到了远程仓库了。
1 | bash复制代码git add . |
4.5.2 通过 PyCharm 界面功能提交
可以点击 PyCharm 右上角的提交按钮
点击后,左侧出现提交文件选择框,勾选文件,并填写comment
,点击 Commit and Push
按钮,完成提交。
后端提交完成后,远程仓库效果如下:
前端提交完成后,远程仓库效果如下:
本文转载自: 掘金