PythonDjango开发实战 课件.pptx
《PythonDjango开发实战 课件.pptx》由会员分享,可在线阅读,更多相关《PythonDjango开发实战 课件.pptx(102页珍藏版)》请在三一办公上搜索。
1、Python Django 开发实战,第1章 初识 Django 框架,Django 的 MTV 设计模式,Django 提供的主要功能模块,Django 的产生背景,Django 的产生背景,开发 Web 站点,通常需要做这样的几件事:构建用户账户体系,实现 Web 站点的登录与注册功能数据表模型定义及访问功能实现编写业务逻辑实现站点功能后台管理功能路由模型实现功能请求映射,几乎所有的 Web 站点都需要做这样的事,且很多功能设计都是类似或一样的,所以,这里会引入大量的重复工作。,这里存在的问题,由此产生了 Web 框架的概念(思想),这也就是 Django 产生的根本原因!,Django
2、的产生背景,Django 的版本发布过程,说明:Django 最后一个支持 Python2.7 的版本是 1.11LTS,而最新的 Django 功能版本是 2.0,如果想使用最新版本的话,需要选择 Python3。,Django 的 MTV 设计模式,MVC 设计模式的交互过程,对于 MVC 设计模式: M 即 Model,代表的是数据存取层,是对数据实体的定义和对数据的 CRUD 操作; V 即 View,代表的是视图层,即系统中选择显示什么和怎么显示的部分; C 即 Controller,代表的是 控制层,它负责根据从 View 中输入的指令,检索 Model 中的数据,再以一定的逻辑产
3、生最 终的结果输出。,Django 的 MTV 设计模式,MTV 设计模式的交互过程,对于 MTV 设计模式: M 即 Model,数据存取层,这一层里处理所有与数据相关的事务,提供在数据库中管理 (添加、修改、删除)和查询记录的机制; T 即 Template,表现层,处理页面的显示,即所有与表现相关的决定都由这一层去处理; V 即 View,业务逻辑层,负责处理业务逻辑,会在适当的时候将 Model 与 Template 组 合在一起,通常被认为是联通 M 与 T 的桥梁。,Django 提供的主要功能模块,Django 中的 ORM,ORM 全称是 Object Relational M
4、apping(对象关系映射),它把对象与数据库中的表关 联起来,对象的属性映射到表的各个字段,同时,它把对表的操作对应到对对象的操作,实 现了对象到 SQL,SQL 到对象的过程转换。,用户模块与权限系统,提供了用户、用户组、权限等概念;维护了用户、用户组和权限之间的关联关系;包含了用户鉴权与登录等基本功能。,Admin 后台管理系统,对系统中定义的数据表(Model)提供了原生的后台管理支持,且支持对管理页面的个性化定制,例如,针对字段值的过滤功能、搜索功能、排 序功能,数据表字段的展示顺序规则定义功能,字段归类功能等等。,Django 提供的主要功能模块,视图,Django 视图是 MTV
5、 设计模式中的 V,它在 Django 中的体现是一个 Python 函数或者是 类,接收 Web 请求并返回 Web 响应。,模板系统,模板系统用于将页面设计的 HTML 代码和用于逻辑处理的 Python 代码分离开来,即做到了数据与逻辑的分离,去除不同代码之间的耦合。,优雅的表单系统 Form,表单系统可以根据 Form 对象的定义:自动生成 HTML 表单元素、检查表单数据的合法性、对不合法的表单数据进行回显,并提示错误、将表单数据转换为对应的 Python 数据类型。,Django 提供的主要功能模块,信号机制,Django 对信号机制的解释是:在框架的不同位置传递特定的消息给应用程
6、序执行预定的操作。它是一种观察者模式,或者叫做发布-订阅模式。即当系统中有 event(事件)发生, 一组 senders(发送者)将 signals(信号)发送给一组 receivers(接收者),receivers 再去执行预定的操作。,路由系统,从 MTV 的设计模式中可以看到,用户向 Web 站点发送请求(对应到一个 url),首先会 到达“对应的”视图,那么,这里的视图是怎么对应上的呢?这就是 Django 路由系统的作用。Django 利用 URLconf 构建起 URL 模式与视图函数之间的映射关系,即利用 Django 的 特定配置方式,设定好哪个 url 可以去执行哪一段 P
7、ython 代码。,中间件,中间件是一个插件系统,嵌入在 Django 的 Request 和 Response 之间执行,可以对输入 和输出内容作出修改。中间件是业务无关的技术类组件,是用来定义处理所有请求和响应的通用处理架构。,Django 提供的主要功能模块,缓存系统,有时访问 Web 站点的某一个服务会发现执行的比较慢,这种情况发生的原因可能是背后有复杂的计算逻辑,也可能是访问数据库系统或者文件系统造成的 IO 延迟等等。通常提 高 Web 站点执行效率的方法是使用缓存,将经常被用户访问到的页面结果保存下来,再次 访问时只需要返回缓存的结果,不会再次执行计算等类似耗时的操作。 Djan
8、go 提供一个健壮的缓存系统,实现了不同级别的缓存粒度:可以缓存单个视图的结果输出,缓存难以生成的片段,或者是缓存整个网站。,第2章 Django 开发环境配置,虚拟环境的安装与配置,Django 的安装与配置,Python 安装与配置,MySQL 的安装与配置,PyCharm 的安装与配置,Python 的安装与配置,Python:Linux 和 Mac OS X 默认会附带 Python 2.7,需要安装 Python 3.7(Django 2.0 需要的 Python 版本 = 3.4),ip:Python 3.4 及以上版本内置(更新:python3 -m pip install -U
9、 pip ),常用的基本命令如下表所示,ip 常用的基本命令,虚拟环境的安装与配置,Virtualenv:让每个应用/工程都有自己的运行时环境,需要注意的地方,安装 Virtualenv:pip install virtualenv,给 BBS 应用创建虚拟环境(注意命名):virtualenv -p /usr/local/bin/python3.7 bbs_python37,进入虚拟环境:source ./bin/activate,退出虚拟环境:deactivate,Django 的安装与配置,Django 是 Python 包,使用 pip 工具在虚拟环境中安装,pip install d
10、jango=2.0.7,说明:这里指定了需要安装的 Django 的版本,如果不指定,pip 命令会选择安装最新的版本。,验证在虚拟环境中安装了 Django,且版本是指定的,以上输出显示,当前的 Python 虚拟环境成功安装了 django 模块,且版本号是 2.0.7,符合预期。,MySQL 的安装与配置,需要去 MySQL 的官方网站下载适合操作系统的安装文件。官网上面提供了两种 安装文件,一种是可以直接运行的安装包,另一种是需要再去配置的压缩包。本质上来说,这两种文件是一样的,最好选择第一种安装文件,即应用程序安装包。,开始安装,安装完成,MySQL 的安装与配置,MySQL 安装完
11、成之后,默认是不会加入到环境变量中去的,这里,手动把 MySQL 的 可执行文件加入到环境变量中去。,PyCharm 的安装与配置,PyCharm 是一种 Python IDE,它是一个跨平台的开发环境,官方提供 Windows、macOS 和 Linux 版本。目前,PyCharm 被社区认为是最好用的 Python IDE。,从官方网站中下载对应于操作系统的版本,由于也是一个应用程序,直接点击安装即可。,安装完成,设置面板,第3章 Django 项目框架搭建,修改项目的默认配置,初始化项目环境,Django 管理工具创建项目骨架,Django 管理工具创建项目骨架,django-admin
12、:Django 提供的命令行管理工具,startproject,用于创建 Django 项目的子命令,在虚拟环境中执行命令:django-admin startproject my_bbs,manage.py,用于管理 Django 项目的命令行工具,完成了项目骨架的创建之后,进入到 my_bbs 容器目录中就可以启动内置的服务器运行当前的项目,执行命令:python manage.py runserver,startproject 是 django-admin 的子命令,用于创建项目。这里,使用这个子命令创建了 my_bbs 项目。正常情况下,执行这个命令不会打印任何内容,但是它会在当前目录
13、下生成 一个项目的骨架,也可以称作是项目的容器。,除了使用 runserver 启动项目之外,还可以使用 shell 命令进入到当前项目的环境中去:python manage.py shell,Django 管理工具创建项目骨架,settings.py :Django 项目的配置文件,BASE_DIR定义的是项目所在的完整路径,SECRET_KEY加密盐,用于对加密数据做 Hash 处理,DEBUG调试标记,在开发环境中设置为 true,ALLOWED_HOSTS用于配置可以访问当前站点的域名,INSTALLED_APPS当前项目需要加载的 app 包路径列表,MIDDLEWARE需要加载的中
14、间件列表配置,ROOT_URLCONF量标记的是当前项目的根 url 配置,TEMPLATES列表变量,用于项目的模板配置,WSGI_APPLICATIONWSGI 应用程序对象的完整 Python 路径,修改项目的默认配置,配置语言环境和时区,把 BBS 项目修改为中文简体:LANGUAGE_CODE = zh-Hans,对时区不敏感: TIME_ZONE = Asia/Shanghai、USE_TZ = False,配置开发数据库,配置 MySQL:Engine(数据库引擎)、NAME(数据库名称)、USER(数据库用户名)、PASSWORD(数据库名称)、HOST(数据库服务器地址)、P
15、ORT(数据库服务器端口号),是由于 MySQLdb 不支持 Python3,所以 Django 连接 MySQL 就不能再使用 MySQLdb 了,需要安装 mysqlclient。在虚拟环境中执行命令:pip install mysqlclient,Django 自带的 sqlite3 不适合做应用项目的数据库,所以,这里用 MySQL 替代项目的默认数据库,需要修改 DATABASES 配置。,初始化项目环境,INSTALLED_APPS 中定义应用的数据库迁移,makemigrations:manage.py 的子命令,生成应用迁移文件,migrate:manage.py 的子命令,用
16、于将应用的模型定义或修改同步到数据库中,django_migrations:记录每一次数据库迁移动作,创建超级用户登录管理后台,createsuperuser:manage.py 的子命令,用于创建超级用户,初始化项目环境,给 BBS 项目创建应用,startapp:manage.py 的子命令,用于创建应用,Python 项目中的 requirements.txt 文件,ip freeze:得到依赖清单,ip install:重建项目环境,将项目装载到 IDE 中,第4章 Django ORM 应用与原理剖析,Model 相关的概念与使用方法,Model 的查询操作 API,构建 post
17、应用需要的数据表,ORM 实现原理分析,构建 post 应用需要的数据表,ost 应用的 Models 定义,BaseModel:抽象 Model 基类,定义通用参数和通用属性,直接继承自 django.db.models.Model,Topic:话题 Model,继承自 BaseModel,从而实现间接继承,Comment:话题评论 Model,继承自 BaseModel,从而实现间接继承,ost 应用承载这样的几个功能:用户可以在 BBS 站内发表话题,称作 Topic可以针对每一个 Topic 发表评论,称作 Comment可以对每一个 Comment 支持或者反对,Topic 和 Co
18、mment 都实现了 _str_ 方法,且函数的返回值也很类似,都打 印了 id 和标识内容的字段,id 字段是在 Model 定义中没有主动指定主键的情况下,Django 自动加上去的。,构建 post 应用需要的数据表,ost 应用完成数据库迁移,INSTALLED_APPS:将 post 应用加载到 BBS 项目中,将 post.apps.PostConfig 放在列表中的第一个,执行数据库迁移: python manage.py makemigrations post:在 post/migrations 包下面生成迁移文件 python manage.py sqlmigrate pos
19、t 0001:打印迁移文件执 行的 SQL 语句 python manage.py check:检查迁移 SQL 语句中的问题 python manage.py migrate:将 Models 映射为数据库的表,数据表名称:由于在 Topic 和 Comment 中都没有显示的指定表名,所以,应用 Django 的规则,将表名定义为,应用名_小写类名,即 post_topic 和 post_comment,编写完成了 post 应用的 Models 定义,为了实现对这些 Models 对象的操作,需要使用 manage.py 提供的数据库迁移工具将 Models 对象映射为数据库中的表。,M
20、odel 相关的概念与使用方法,Model 的组成部分,django.db.models.Model,Meta 元数据,数据表项 Field,Meta 元数据类属性,abstract,db_table,indexes,unique_together,Field 通用字段选项,blank,unique,null,db_index,db_column,default,primary_key,choices,help_text,基础字段类型,django.db.models.Field,IntegerField,AutoField,CharField,TextField,BooleanField,D
21、ateField,DateTimeField,EmailField,SignField,Model 相关的概念与使用方法,三种关系字段类型,ForeignKey,OneToOneField,ManyToManyField,Model 的继承模型,抽象基类,多表继承,代理模型,Model 的查询操作 API,创建 Model 实例对象,返回单实例的查询方法,使用 save 方法创建 Model 实例,使用 create 方法创建 Model 实例,使用 get 查询,使用 get_or_create 查询,Model 的查询操作 API,返回 RawQuerySet 的查询方法,返回 Query
22、Set 的查询方法, Topic.objects.all() :使用 all 方法获取所有的数据记录 Topic.objects.reverse() :使用 reverse 方法获取逆序数据记录 Topic.objects.order_by(-title, created_time) :使用 order_by 方法自定义排序规则 Comment.objects.filter(up_gte=30):使用 filter 方法过滤数据记录 Comment.objects.exclude(up_lt=29):使用 exclude 方法反向过滤 Comment.objects.values(id, up
23、):使用 values 方法获取字典结果 Comment.objects.values_list(id, up):使用 values_list 方法获取元组结果 Comment.objects.all():2:对 QuerySet 进行切片, Topic.objects.raw(SELECT id FROM post_topic WHERE title = %s, first topic) Comment.objects.raw(SELECT * FROM post_comment)0:RawQuerySet 支持索引和切片,Model 的查询操作 API,返回其他类型的查询方法,存在关联关系
24、的查询, Comment.objects.filter(id_gt=1).count():返回 QuerySet 的对象数量 Comment.objects.filter(id_gt=1).exists():判断 QuerySet 是否包含对象 Comment.objects.filter(id=1).update(up=90, down=33):使用 update 方法更新 Model 实例 Topic.objects.filter(id_lte=2).delete():使用 delete 方法删除 Model 实例, ment_set.filter(content=very good!):
25、Model 的反向查询 Comment.objects.filter(topic_title_contains=first):跨关联关系查询,Model 的查询操作 API,F 和 Q 查询,聚合和分组查询, Comment.objects.filter(up_lte=F(down):要查询 up 小于等于 down 的 Comment Comment.objects.filter(up_gt=F(down) * 2):查询所有 up 值大于 down 值 2 倍的 Comment 对象 Topic.objects.filter(Q(title_contains=topic):查询 title
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- PythonDjango开发实战 课件 PythonDjango 开发 实战
链接地址:https://www.31ppt.com/p-1869358.html