Python 之 Django

Django

1、django后台请求处理过程

找到setting文件中ROOT_URLCONF所指向的文件,它告诉django,这个站点中所有被用到的模块都在ROOT_URLCONF指向的文件中。按顺序逐个匹配URLconf里的URLpatterns,当找到这个匹配 的URLpatterns就调用相关联的view函数,并把 HttpRequest 对象作为第一个参数。

运行过程:
进来的请求传入/hello/.
Django通过在ROOT_URLCONF配置来决定根URLconf.
Django在URLconf中的所有URL模式中,查找第一个匹配/hello/的条目。
如果找到匹配,将调用相应的视图函数
视图函数返回一个HttpResponse
Django转换HttpResponse为一个适合的HTTP response, 以Web page显示出来。

摘录:

1、运行 django-admin.py startproject mysite 命令在当前目录创建一个 mysite 目录

备注:如果发现找不到该命令,是因为django的安装目录没有添加到系统路径中。解决方法是将django的安装目录添加到系统变量中的path路径中。

2、新建的工程中各个文件的作用

__init__.py :让 Python 把该目录当成一个开发包 (即一组模块)所需的文件。
manage.py :一种命令行工具,可让你以多种方式与该 Django 项目进行交互。
settings.py :该 Django 项目的设置或配置。
urls.py :该 Django 项目的 URL 声明,即 Django 所支撑站点的内容列表

3、django自带服务器的缺点

尽管对于开发来说,这个开发服务器非常得棒,但一定要打消在产品级环境中使用该服务器的念头。在同一时间,该服务器只能可靠地处理一次单个请求,并且没有进行任何类型的安全审计。

4、url文件中的正则表达式

模式包含了一个尖号(^)和一个美元符号($)。这些都是正则表达式符号,并且有特定的含义: 上箭头要求表达式对字符串的头部进行匹配,美元符号则要求表达式对字符串的尾部进行匹配。
最好还是用范例来说明一下这个概念。 如果我们用尾部不是$的模式’^hello/’,那么任何以/hello/开头的URL将会匹配,例如:/hello/foo 和/hello/bar,而不仅仅是/hello/。类似地,如果我们忽略了尖号(^),即’hello/$’,那么任何以hello/结尾的URL将会匹配,例如:/foo/bar/hello/。如果我们简单使用hello/,即没有^开头和$结尾,那么任何包含hello/的URL将会匹配,如:/foo/hello/bar。因此,我们使用这两个符号以确保只有/hello/匹配,不多也不少。

5、正则表达式

符号匹配
. (dot) 任意单一字符
d 任意一位数字
[A-Z] A 到 Z中任意一个字符(大写)
[a-z] a 到 z中任意一个字符(小写)
[A-Za-z] a 到 z中任意一个字符(不区分大小写)
+ 匹配一个或更多 (例如, d+ 匹配一个或 多个数字字符)
[^/]+ 一个或多个不为‘/’的字符
零个或一个之前的表达式(例如:d? 匹配零个或一个数字)
* 匹配0个或更多 (例如, d* 匹配0个 或更多数字字符)
{1,3} 介于一个和三个(包含)之前的表达式(例如,d{1,3}匹配一个或两个或三个数字)
6、django处理请求过程
所有均开始于setting文件。
当你运行python manage.py runserver,脚本将在于manage.py同一个目录下查找名为setting.py的文件。这个文件包含了所有有关这个Django项目的配置信息,均大写: TEMPLATE_DIRS , DATABASE_NAME , 等. 最重要的设置时ROOT_URLCONF,它将作为URLconf告诉Django在这个站点中那些Python的模块将被用到。
当访问 URL /hello/ 时,Django 根据 ROOT_URLCONF 的设置装载 URLconf 。 然后按顺序逐个匹配URLconf里的URLpatterns,直到找到一个匹配的。 当找到这个匹配 的URLpatterns就调用相关联的view函数,并把 HttpRequest 对象作为第一个参数。
7、url配置松耦合:在Django的应用程序中,URL的定义和视图函数之间是松 耦合的,换句话说,决定URL返回哪个视图函数和实现这个视图函数是在两个不同的地方。 这使得 开发人员可以修改一块而不会影响另一块。
原文地址:https://www.cnblogs.com/nelsen-chen/p/9138980.html