Django入门
Django介绍
介绍
Django是Python语言中的一个Web框架,Python语言中主流的 web框架有Django、Tornado、Flask 等多种
优势 :大而全,框架本身集成了ORM、模型绑定、模板引擎、缓 存、Session等功能,是一个全能型框架,拥有自己的Admin数据管 理后台,第三方工具齐全,性能折中
缺点 :功能太多,数据分表复杂,高性能扩展复杂、重量级
Django 是开源的
安装
python3.8+
pip安装:在cmd命令窗口中,输入:
1 ==4.1.1 pip install django
文档
官方文档的链接在:https://docs.djangoproject.com
提示
点击页面右下角的 language 按钮,可以选择 zh-hans ,显示中文,只有部分页面有中文翻 译
点击页面右下角的Documentation version,可以选择版本
专业词汇
B/S和C/S
Django是用于开发B/S架构的软件的,软件主要分为B/S架构和C/S 架构:
B/S:全称Browser/Server(浏览器/服务器)
C/S:全称Client/Server(客户端/服务器)
MVC
MVC全名是Model View Controller,是模型(model)-视图(view) -控制器(controller)的缩写,一种软件设计典范,用一种业务逻 辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个 部件里面,在 改进 和 个性化定制界面及用户交互 的同时, 不需要重 新编写业务逻辑 。
M:管理应用程序的状态(通常存储到数据库中),并约束改变状态的行为(或者叫做“业务规 则”)。
V: 负责把数据格式化后呈现给用户。
C: 接受外部用户的操作,根据操作访问模型获取数据,并调用“视图”显示这些数据。控制器是将 “模型”和“视图”隔离,并成为二者之间的联系纽带。
MTV
Django也是一个MVC框架。但是在Django中,控制器接受用户输 入的部分由框架自行处理,所以 Django 里更关注的是模型
(Model)、模板(Template)和视图(Views),称为 MTV模式:
M: 代表模型(Model),即数据存取层。 该层处理与数据相关的所有事务: 如何存取、如何验 证有效性、包含哪些行为以及数据之间的关系等。
T: 代表模板(Template),即表现层。 该层处理与表现相关的决定: 如何在页面或其他类型文档中 进行显示。
V: 代表视图(View),即业务逻辑层。 该层包含存取模型及调取恰当模板的相关逻辑。 你可以 把它看作模型与模板之间的桥梁。
ORM
ORM 就是通过实例对象的语法,完成关系型数据库的操作的技术, “ “ - 是 对象 关系映射 (Object/Relational Mapping) 的缩写
ORM 把数据库映射成对象
举例来说,下面是一行 SQL 语句。
1 SELECT id, first_name, last_name, phone, birth_date, sex2 FROM persons 3 WHERE id = 10
程序直接运行 SQL,操作数据库的写法如下。
1 res = db.execSql(sql);2 name = res[0]["FIRST_NAME"];
改成 ORM 的写法如下。
1 p = Person.get(10); 2 name = p.first_name;
一比较就可以发现,ORM 使用对象,封装了数据库操作,因此可 以不碰 SQL 语言。开发者只使用面向对象编程,与数据对象直接交 互,不用关心底层数据库
ORM 有下面这些优点
数据模型都在一个地方定义,更容易更新和维护,也利于重用代码
ORM 有现成的工具,很多功能都可以自动完成,比如数据初始化、事务等等
它迫使你使用 MVC 架构,ORM 就是天然的 Model,最终使代码更清晰
基于 ORM 的业务代码比较简单,代码量少,语义性好,容易理解
不必编写性能不佳的 SQL
ORM 也有很突出的缺点
ORM 库不是轻量级工具,需要花很多精力学习和设置
对于复杂的查询,ORM 要么是无法表达,要么是性能不如原生 的 SQL
ORM 抽象掉了数据库层,开发者无法了解底层的数据库操作, 也无法定制一些特殊的 SQL
Django项目搭建
创建项目
在命令行中执行代码
1 $ django-admin startproject mysite
django-admin 为内部命令
startproject 为参数
mysite 项目名
备注
避免使用 Python 或 Django 的内部保留字来命名项目。比如 说,避免使用像 django (会和 Django 自己产生冲突)或 test (会和 Python 的内置组件产生冲突)这样的名字
项目结构
1 mysite/ # 项目的名称2 manage.py # 管理 Django 项目的命令行工具,启 动和结束等3 mysite/ # 项目主应用 , 它是一个 Python 包 4 __init__.py # 一个空文件 , 告诉 Python 这个 目录是一个 Python 包5 settings.py # 项目的配置文件,有关于数据 库、编码、时区等6 urls.py # 项目的 url 路由配置,即 url 路由与 其函数的对应配置7 wsgi.py # 用于项目与 WSGI 兼容的 Web 服务器入 口,用于项目部署
启动项目
命令行窗口中,进入最外层的mysite
运行命令
python manage.py runserver
额外参数
python manage.py runserver 8081
python manage.py runserver 127.0.0.1:8082
一 第 个Django程序
==> picture [13 x 9] intentionally omitted <==
—– Start of picture text —–
12
—– End of picture text —–
==> picture [372 x 433] intentionally omitted <==
—– Start of picture text —–
了解请求流程
RIF isKET
—_ WY J oN,
| |
ee
创建一个子应用
1 $ python manage.py startapp myapp01
修改settings.py配置
—– End of picture text —–
- 实战 开发登录表单
==> picture [399 x 159] intentionally omitted <==
—– Start of picture text —–
1 def login_form(request):
‘’’
2 html =
3
4
5





