django开发
需求的描述
用户端
- 可以通过搜索到博客内容
- 能够根据关键词进行搜索。然后展示出文章列表
- 能够根据某个分类查看所有关于这一分类的文章
- 首页看到新到旧的文章列表
- 能够订阅,能够评论,能够配置友链
作者端
- 后台需登录进入
- 创建分类和标签
- 能够用markdown进行编写
- 上传文章配图
- 配置导航
- 及时更新,收到对应的订阅
ER关系说明

sql语句如下:
| 1 | CREATE TABLE `user` ( | 
框架基础
关于django的几个模块
参考官方的文档https://docs.djangoproject.com/en/3.1/
- Model部分包含 - 1.1 models 模型的定义相关使用说明 - 1.2 querysets 在model的基础上查看数据以及定义过滤 - 1.3 model instances 单个记录,如果CRUD操作 - 1.4 Migrations 表结构的调整,迁移等操作 - 1.5 Advanced 使用原生sql,聚合,事务,搜索等相关操作 - 1.6 其他:数据库优化等操作 
- View部分包含 - 2.1 The basics:url配置,增加缓存以及增加限制等 - 2.2 reference 静态文件和404页面处理。请求和回复对象 - 2.3 File uploads 文件上传下载存储等 - 2.4 class-based views 构建和复用view - 2.5 advanced 导出csv和pdf格式 - 2.6 中间件涉及安全和session,缓存等 
- 模版 - 3.1 the basics 基本配置模版和语法 - 3.2 逻辑操作 - 3.3 高效的配置渲染模版 
- form表单 - 4.1 基础语法使用 - 4.2 进阶 与model一起操作 
编写一个简单的学员管理系统
先安装虚拟环境
| 1 | pip install virtualenvwrapper | 
创建一个文件夹student-env为虚拟环境目录,并执行初始化虚拟环境 (默认构建在用户下面的ENV环境下。可以做更改,需要新增系统变量)
| 1 | mkvirtualenv student-env | 
激活虚拟环境
| 1 | workon student-env | 
停止或者删除环境
| 1 | deactivate | 
安装django1.11
| 1 | pip install django==1.11 | 
创建项目
切换到自己喜欢的目录,构建django项目(注意在虚拟环境进行操作)
| 1 | mkdir student_house | 
创建App(创建模块)(出现错误可参考https://blog.csdn.net/qq_28194001/article/details/86709006)
| 1 | cd student_sys | 

编写模块代码
VS配置环境参照https://blog.csdn.net/cierlongbu/article/details/103753452
在model.py中编写
| 1 | class Student(models.Model): | 
在admin.py中编写
| 1 | class StudentAdmin(admin.ModelAdmin): | 
注册到setting文件中
| 1 | INSTALLED_APPS = [ | 
| 1 | LANGUAGE_CODE = 'zh-Hans' | 
在项目的根目录下执行:
| 1 | python manage.py makemigreations # 创建数据库迁移文件 | 
效果如下:

关于前台页面的开发
在student.py 中
| 1 | # 定义了一个index方法 | 
注意:在工作空间的json中加入可以解决在django中编写html的问题
| 1 | "files.associations": { | 
在创建的templates的index.html中编写
| 1 | 
 | 
在urls.py中配置映射目录
| 1 | from django.conf.urls import url | 
重新调整
| 1 | # 定义了一个index方法 | 
| 1 | <body> | 
get_status_display自动调用带有choices
效果如下:

提交数据(使用form)
创建一个forms.py文件
| 1 | from django import forms | 
修改view.py
| 1 | 
 | 
页面调整如下:
| 1 | <body> | 
注意:csrf_token是对安全性进行检验
最终效果如下:

优化
一般将数据操作逻辑封装到model层中
| 1 | 
 | 
使用class-based view复用
在views.py中构建以下代码:
| 1 | from django.views import View | 
urls.py中引入:
| 1 | from student.views import index | 
注意:as_view 就是对get和post方法的包装
使用中间件
构建一个middlewares.py文件,代码如下:
| 1 | class TimeItMiddleware(MiddlewareMixin): | 
加入到setting配置中的中间件中:
| 1 | MIDDLEWARE = [ | 
关于单元测试
参考的文章很多,可以参考https://www.cnblogs.com/fiona-zhong/p/10554197.html