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