一、web开发基本术语
1.两种架构
CS架构:CS架构(Client/Server:客户端-服务端架构)
BS架构:BS架构(Browser/Server:浏览器-服务端架构,特殊的CS)
2.两种开发模式
MVC开发模式:
M即Model: 是应用程序中用于处理数据逻辑的部分
V即View: 视图是指用户看到并与之交互的界面
C即Controller(控制器) - 控制器作用于模型和视图上。它控制数据流向模型对象,并在数据变化时更新视图,它使视图与模型分离开
MTV开发模式:
M:Model,数据模型:这是一个抽象层,用来构建和操作web应用中的数据
T:Template,模板层,负责显示数据
V:View,视图:用于封装负责处理用户请求及返回响应的逻辑
Django 里更关注的是模型(Model)、模板(Template)和视图(Views),所以Django也被称为MTV框架。
MVC与MTV在本质上是一样的,都是为了分工明确、“低耦合”
3.Django中两种开发模式的定义
MVC:
M :数据存取部分,由django数据库层处理
V: 显示数据的界面
C:根据用户输入委派视图的部分,由 Django 框架根据 URLconf 设置,对给定 URL 调用适当的 Python 函数(视图函数)。
MTV:
M :代表模型(Model),即数据存取层。 该层处理与数据相关的所有事务。例如:如何存取、如何验证有效
T :代表模板(Template),即表现层。 该层处理与表现相关的决定: 如何在页面或其他类型文档中进行显示。
V :代表视图(View),即业务逻辑层。 该层包含存取模型及调取恰当模板的相关逻辑。 可以把它看作模型与模板之间的桥梁。
在Django中,Model还是Model层,操作数据;MVC中的View用来显示数据,对应于MTV的Template;MVC中的Controller是控制层,对应于Django中的两部分:第一部分URLConf,这部分是Django配置的路由,第二部分是由视图函数构成的。
二、Django简介
1.Django的优势
- 强大的后台功能
- 优雅的网址设计
- 可插拔的 App 理念
- 开发效率很高
2.安装Django
pip install django(安装最新版Django)
pip install django==2.0.6(安装2.0.6版本)
三、Hello Django
1.运行流程
1、根据项目配置文件settings.py中的
ROOT_URLCONF找到总路由模块的路径。
2、加载总路由文件,寻找urlpatterns变量,依次去匹配URL,直到匹配到第一个路径,然后根据匹配的路径执行视图函数,或者也可以通过include()函数加载子路由文件(更常用)。
3、子路由文件中取寻找urlpatterns变量,匹配路径,寻找对应的视图函数。
2.启动开发服务器
几种常见的启动方式
-
绑定本地端口号为8000
python manage.py runserver -
绑定本地端口号为8888
python manage.py runserver 8888 -
绑定某个主机端口号为8888
python manage.py runserver ip地址:8888
注意:如果想要任何主机都能问,则settings.py中 ALLOWED_HOSTS = [’*’,]
3.命令行创建项目与应用
- 创建项目
django-admin.py startproject 项目名称
- 创建应用
python manage.py startapp app名称
四、配置路由
1.通过path()函数配置(通过路由匹配路径)
2. 通过re_path()函数配置(通过正则匹配路径)
3. URL动态传参
1.通过在path()函数中的第一个url参数,捕获客户端传递的参数,也就是匹配URL中添加"<参数名>"动态捕获参数。
2.如果通过re_path()函数捕获参数,则通过命名分组的方式捕获参数,
(?P<参数名称>正则表达式)
视图函数中的形式参数名与URL动态捕获的参数名一致
4、 设置额外参数:以字典形式传递参数到视图函数,字典的key与视图函数的形式参数名一致
path(‘路由’,视图函数名,{key:value})
re_path(‘路由’,视图函数名,{key:value})
5、路径转换器
URL捕获到参数后,常用的转换器:
str 匹配除路径分隔符之外的任何非空字符串,并将参数转换为字符串,这个是默认转换器
int 匹配零或任何正整数。返回一个int
uuid:匹配格式化的uuid,转换为UUID类型的对象,如 075194d3-6885-417e-a8a8-6c931e272f00
注:uuid是全局唯一标识符(univeral unique identifier),通常用32位的一个字符串的形式来表现。有时也称guid(global unique identifier)。python中自带了uuid模块来进行uuid的生成和管理工作
path,匹配任何非空字符串,包含路径分隔符(/)
slug 可理解为注释、后缀或附属,常作为URL的解释性字符。可匹配任何ASCII字符以及连接符和下划线,能使URL更加清晰易懂,比如网页的标题是"13岁的孩子",其URL地址可以设置为"13-sui-de-hai-zi"。
五、视图函数
1.视图函数的第一个位置参数为请求对象,可以接收URL传递过来的参数
2.视图函数加载模板
- 视图函数通过返回render(request,‘模板路径’)函数加载模板
- 视图函数也可以通过render()函数向模板传递字典,模板接收到数据后可以通过{{ 模板变量名 }}显示数据,模板变量名必须与字典中的key一致。
六、获取请求信息
请求信息存放在视图函数的参数request中
request的常用属性:
- COOKIES:获取客户端Cookie信息
- FILES:字典对象,包含所有的上传文件
- GET:获取GET请求的请求参数
- POST:获取POST请求中请求体中的请求参数
- method:获取该请求的请求方式
- path:获取请求路径
- user:获取当前请求的用户信息
- META:获取客户端的请求头信息,eg: request.META.get(“REMOTE_ADDR”)获取客户端的IP地址
七、JsonResponse
- 这个类是HttpResponse的子类
- 它的默认Content-Type 被设置为: application/json
- 第一个参数,data应该是一个字典类型,当 safe 这个参数被设置为:False ,那data可以填入任何能被转换为JSON格式的对象,比如list, tuple, set。 默认的safe 参数是 True.