Django in Action: Intro. & Resource
Django in Action: Intro. & Resources
Intro.
Web 开发框架:用于 Web 应用开发和部署的软件架构。
Python 的 Web 框架一般实现 3 种核心功能:
- socket 功能;
- 根据访问的 URL 执行不同的函数;
- HTML 模板的填充和展示;
目前主流的 Web 开发框架主要有:
Django
:功能全面Flask
:可以根据 URL 执行函数,其余功能通过插件实现Tornado
:功能全面,但是需要通过代码实现;专注于异步、高并发
MVC 框架模式
框架 vs 设计模式
框架针对于特定的应用领域,为该领域的应用开发提供可重用的代码,如QT、Spring、Django。
设计模式针对于更加具体的编程问题,为该问题提供可重用的解决方案,如单例模式、适配器模式。
MVC
MVC (Model-View-Controller) 是 Web 框架的一种设计方案,将 Web 应用分为了模型(Model)、视图(View)和控制器(Controller)3 层。下图是它们的依赖关系:
graph LR A(Model) B(Controller) --> A C(View) --> A B --> C
用户请求被路由到控制器,控制器使用模型来执行数据操作,然后产生返回给用户的结果。执行过程如下图:
sequenceDiagram participant A as View participant B as Controller participant C as Model A ->> B: HTTP Requests B ->> C: Query or Process C ->> B: Returned Data B ->> A: HTML View
View 和 Controller 均依赖于 Model。 但是 Model 既不依赖于 View,也不依赖于 Controller。 这是分离的一个关键优势,允许 Model 独立于可视化展示进行构建和测试。
https://docs.microsoft.com/zh-cn/aspnet/core/mvc/overview?view=aspnetcore-5.0
Django MTV 框架模式
MTV (Model-Template-View) 类似于 MVC。Model 用于定义数据结构和数据库表,Template 作为前端页面的模板,View 管理视图函数及URL配置。
graph LR A(用户浏览器) -->|请求| B[应用服务器] -->|传递| C([urls.py]) -->|映射视图函数| D[views.py] -->|执行| E[models.py] -->|查询| F[(数据库)] F -->|数据| E -->|填充| G[Template] --> B -->|返回| A
Model
1 | from django.db import models |
Template/
1 |
|
View
1 | from django.http import HttpResponse |
开发流程
部署环境
- 使用虚拟环境:
virtualenv --python=python37 pyenv37
- 激活虚拟环境:
./pyenv37/Scripts/activate
- 安装 Dhango:
pip isntall django
创建项目
- 创建并进入项目文件夹:
mkdir myproject; cd myproject
- 补充 README、requirements、开源许可证、更新记录文件;
- 创建项目,名称最好和项目目录相同:
django-admin startproject myproject
- 进入项目目录:
cd ./myproject
配置 settings
- 拆分
settings.py
为base
、develop
、product
三个配置文件,并对myproject/wsgi.py
和manage.py
进行修改,便于分离开发环境和线上环境的设置 - 设置时区和语言
配置 Git
- 使用 Git 作为版本管理系统
创建应用
- 创建应用:
python manage.py startapp myapp
进行开发
- 编辑
models.py
,定义数据库 - 编辑
views.py
,编写网页存取逻辑。 - 编辑
admin.py
- 编辑
urls.py
,创建 URL 和views.py
中方法的对应关系
常用命令
创建数据库迁移文件:
python manage.py makemigrations
执行数据库迁移:
python manage.py migrate
数据库迁移:将
models.py
中的修改应用到数据库本地测试:
python manage.py runserver
Resources
官方文档:https://docs.djangoproject.com/zh-hans/3.0/
侧重原理:《Mastering Django 2》:https://djangobook.com/mastering-django-2-book/
开发指导:《Django 企业开发实战》,勘误:https://www.the5fire.com/987.html
开发提升: