学习基础第二篇
二、Django框架学习
1、Django是一个web框架
2、Django是一个产品级框架,支持全球近万个网站及云端
3、采用MTV(model-template-view)模型组织
4、相比其他框架,Django充分利用Python特点,开发效率更高
5、Web框架
6、程序实例——最小程序
i、程序工程目录结构
ii、开发步骤
1、新建工程(在cmd中)django-admin startproject mysite
I、django-admin 是Django框架全局的管理工具
II、
2、修改工程
I、创建一个具体的应用
II、修改应用的views.py 对url的具体相应功能
III、修改url的路由,指定url与相应之间的关系
3、运行工程(在cmd中)python manage.py mysite
I、Manage.py对当前生成的工程进行管理
iii、 MTV开发模式
1、云端web系统的三讴歌通用功能需求
I、数据组织
II、控制逻辑
III、Web展示
2、MTV开发模式
I、M:models模型:与数据组织相关的功能,组织和存储数据的方法和模式,与数据模型相关的操作
II、T:templates模板:与变现相关的功能。页面展示风格和方式,与具体数据分离,用于定义表现风格
III、V:views视图:针对求情选取数据的功能。悬着那些数据用于展示,指定显示模板。每个url对应一个回调函数
3、实例解析
I、Mysite工程中,urls文件是路由——web框架的一部分 helloapp.py是针对摸个app的模型 views.py是针对摸个app的视图
4、步骤
I、新建helloapp2应用
II、修改views.py
II.1、使用之前的HTML文件为返回页面修改views.py文件,采用render函数
III、新增urls.py文件,在helloapp2中新增urls.py文件(文本路由文件)
IV、在全局路由文件中增加对本地应用路由文件的引用,使用include函数
V、在setting文件中,设置模板路径,让django框架找到模板所在目录
7、实例——云端留言板
i、基本功能定义
1、提交留言功能:用户设定自己的名字为A,指定人以名字B,向B留言,记为msg。留言保存在云端
2、获取留言功能:输入名字A,云端返回10条最新留言记录
ii、开发流程:
1、新建工程cloudms
2、新建应用msgapp
3、增加模板,即显示界面的HTML、css、js代码,配置路径
4、设定URL路由,本地路由和全局路由
5、编写交互代码
6、运行
三、框架进阶
1、Url路由机制
i、Settings.py文件中root_urlconf变量指定全局路由文件的名称
ii、Django使用urlpatterns变量表示路由(urls.py)该变量是列表类型,由path()或者re_path()作为元素组成
iii、路由的处理流程
1、Django查找全局urlpatterns变量(urls.py)
2、按照先后顺序,对url逐一匹配urlpatterns每个元素
3、找到第一个匹配时挺会查找,根据匹配结果执行对应处理函数
4、如果没有找到匹配或者出现异常,django进行错误处理
5、
iv、路由:path()和re_path()
1、Path()处理字符串路由,re_path()处理正则表达式路由
2、参数
I、Path(route,view,kwargs=None,name=None)
I.1、route是url字符串或者url模式,django定影的url转换语法
I.2、view是对应的处理函数,或者include类
I.3、Kwargs:向处理函数提供额外参数,以字典形式表示
I.4、Name:给URL模式的命名
I.5、
II、Re_path(route,view)route是正则表达式,view是对应的处理函数
III、Django支持三种方式表达route
III.1、精确字符串格式:articles/2003/
1一个精确url匹配一个操作函数
2最简单的形式,适合对静态的url的相应
3Url字符串不以/开头,但是要以/结尾
III.2、Django的转换格式:<类型:变量名> articles//
1一个url模板。匹配url痛死在其中获得一批变量作为参数
2常用形式。目的是通过url进行参数获取和传递
3采用<类型:变量名>格式获取参数
4
III.3、 正则表达式格式:articles/(?P[0-9][4])/
1借助正则表达式丰富语法表达一类的url
2可以通过<>提取变量作为处理函数的参数,高级用法
3使用re_path()函数。
i简单形式(parttern)。不提供参数:articles/[0-9]{4}/
ii命名实行(?Pparttern),提取参数,统一为str类型:articles/(?P[0-9]{4})
4
3、View的使用
I、View包括两种类型:处理函数和include函数
处理函数:views.py中处理url的对应函数,url处理的归宿
include函数:包含其他路由信息的函数,分段路径组合形成总路径——>用法:附加本地路由;路径去重
2、视图响应类型
i、视图函数接搜狐HTTP请求并返回相应,可以放在任何地方,可以使任何功能。视图函数可以返回web文本、页面、重定向、错误、图片等任何内容
ii、视图函数通过HttpResponse、JsonResponse等类表达并返回相应,按约定,视图函数放在对应app中的views.py文件中
iii、响应类型
1、HttpResponse类及其子类(10个)
I、
II、HttpRespon(content,content_type=None,status=200,charset=None)
II.1、Content:拟返回的字符串
II.2、content_type:mime格式的返回内容类型
II.3、StatusL响应状态码
II.4、charset响应的字符集
2、JsonrResponse类
I、JsonrRepsonse(data):data:字典类型,返回json类型数据
3、StringmingHttpResponse类
I、StringmingHttpResponse(streaming_content):
streaming_content:内容的迭代器形式,以内容流的方式相应
4、FileResponse类
I、FileResponse(stream):stream:以流形式打开后的文件
iv、Django请求类型的判断
1、Django.views.decorators.http
2、路由不能判断HTTP请求的类型
3、Django通过decorates在视图函数前进行基本判断。格式如下:
3、视图流式相应机制
i、一次性响应和流式响应
1、httpResponse;类型和JsonResponse;类是一次性响应
2、StreamingHttpResponse类(适合大文本文件传输)和FileResponse类(大二进制文件传输)是流式响应
ii、实例:文件下载
1、HttpREsponse方式:文件内容一次性相应,仅适合小文件
2、StreamingHttpResponse方式
I、将文件分段,每次传输已奔赴,分段大小可调
II、利用python的迭代器产生分段
III、可以使文件,也可以是任何大规模数据响应
IV、Yield关键字:yield->生成器
包含yield语句的函数是一个生成器,生成器每次昌盛一个值,函数会被冻结,被唤醒之后会再昌盛一个值。生成器就是一个不断产生值的函数
3、FileResponse类型
I、自动分段、自动迭代、适合二进制文件传输
4、Mime标记
I、Content–type用于指定文件类型
II、Content—Disposition用于指定下载文件的默认名称
III、这两者是mime类型的标准定义
4、模板引擎和模板使用.
i、模板引擎是模板响应的后端
ii、模板引擎:django和jinja2
iii、模板引擎的设置:settings.py文件中对模板引擎进行匹配(BACKEND)
iv、模板目录在列表中的顺序是搜索模板的顺序
v、模板的查找
vi、模板的渲染
5、模板语言
i、注释
1、单行注释{#…#}
2、多行注释
{%comment%}
{%endcomment%}
ii、变量
iii、标签
iv、过滤器