Django in Action: Intro. & Resource

Django in Action: Intro. & Resources

Intro.

Web 开发框架:用于 Web 应用开发和部署的软件架构。

Python 的 Web 框架一般实现 3 种核心功能:

  1. socket 功能;
  2. 根据访问的 URL 执行不同的函数;
  3. 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
2
3
4
5
from django.db import models

class employee(models.Model):
name = models.CharField(max_Length = 32, verbose_name = "姓名")
email = models.EmailField(verbose_name = "邮箱")

Template/

1
2
3
4
5
6
7
8
9
10
<!DOCTYPE HTML>
<heml lang="en">
<head>
<meta charset="UTF-8">
<title>Test</title>
</head>
<body>
{{ hello }}
</body>
</heml>

View

1
2
3
4
from django.http import HttpResponse

def hello(request):
return HttpResponse("Hello World!")

开发流程

部署环境

  1. 使用虚拟环境:virtualenv --python=python37 pyenv37
  2. 激活虚拟环境:./pyenv37/Scripts/activate
  3. 安装 Dhango:pip isntall django

创建项目

  1. 创建并进入项目文件夹:mkdir myproject; cd myproject
  2. 补充 README、requirements、开源许可证、更新记录文件;
  3. 创建项目,名称最好和项目目录相同:django-admin startproject myproject
  4. 进入项目目录:cd ./myproject

配置 settings

  1. 拆分 settings.pybasedevelopproduct 三个配置文件,并对 myproject/wsgi.pymanage.py 进行修改,便于分离开发环境和线上环境的设置
  2. 设置时区和语言

配置 Git

  1. 使用 Git 作为版本管理系统

创建应用

  1. 创建应用:python manage.py startapp myapp

进行开发

  1. 编辑 models.py,定义数据库
  2. 编辑 views.py,编写网页存取逻辑。
  3. 编辑 admin.py
  4. 编辑 urls.py,创建 URL 和 views.py 中方法的对应关系

常用命令

  1. 创建数据库迁移文件:python manage.py makemigrations

  2. 执行数据库迁移:python manage.py migrate

    数据库迁移:将 models.py 中的修改应用到数据库

  3. 本地测试: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

开发提升:

其他资料:https://wsvincent.com/best-django-books/