![a3a053862793cb1429d0ce1bef492c32.png](https://img-blog.csdnimg.cn/img_convert/a3a053862793cb1429d0ce1bef492c32.png)
简要回顾一下上一期我们提到了Django的MTV模式,这期我们在讲MTV前先看来看如何配置URL。URL配置是链接用户请求和MTV模型之间的桥梁,先看下图
![f8a7878f1ab47fd794e510bc33370d5c.png](https://img-blog.csdnimg.cn/img_convert/f8a7878f1ab47fd794e510bc33370d5c.png)
- 编写URL
URL(Uniform Resource Locator,统一资源定位符)是对可以从互联网上得到的资源位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,用于指出文件的路径位置。简单地说,URL就是常说的网址,每个地址代表不同的网页,在Django中,URL调度器也称为URLconf。
我们首先来先分步骤看看Django都干了什么来处理这个请求:
- 首先Django确定要使用的根URLconf模块。通过 ROOT_URLCONF 来设置,具体在 settings.py 配置文件中。但是如果传入HttpRequest对象具有urlconf属性(由中间件设置),则其值将替换ROOT_URLCONF设置。
![e3b64afba2155c36c97f13e6e47f00a2.png](https://img-blog.csdnimg.cn/img_convert/e3b64afba2155c36c97f13e6e47f00a2.png)
2. Django加载该Python模块并查找该变量urlpatterns。这应该是一个Python的django.conf.urls.url()实例列表。
3. Django按顺序运行每个URL模式,并在匹配所请求的URL的第一个URL中停止。
4. 一旦正则表达式匹配,Django将导入并调用给定的视图,这是一个简单的PYthon函数(或基于类的视图)。该视图通过以下参数传递:
- 4.1 一个实例 HttpRequest。
- 4.2 如果匹配的正则表达式没有返回任何命名组,那么来自正则表达式的匹配将作为位置参数提供。
- 4.3 关键字参数由正则表达式匹配的任何命名组组成,由可选kwargs参数中指定的任何参数覆盖django.conf.urls.url()
5. 如果没有正则表达式匹配,或在此过程中的任何一点出现异常,Django将调用适当的错误处理视图。
简单的说就是先确定根URLconf位置,查找全局(项目)路由表,再根据需要查找子应用路由表,再匹配并选择正确的视图(View)。
![26991cf9d19a7712fb72c364fedccd94.png](https://img-blog.csdnimg.cn/img_convert/26991cf9d19a7712fb72c364fedccd94.png)
我们首先打开根目录下的urls.py看下默认自带的代码
![2926c8f7479f41bce4064f3fd7a43e16.png](https://img-blog.csdnimg.cn/img_convert/2926c8f7479f41bce4064f3fd7a43e16.png)
这里默认引入了admin模块,就是Django自带的后台管理模块,然后通过urls模块引入了path函数。path是个路由解析方法,帮助我们解析URL地址,告诉我们去哪里寻址或者url映射哪个view函数。
urlpatterns:整个项目的URL集合,每个元素代表一条URL信息。每一个 Django 路由表模块(urls.py)中都约定必须包含一个urlpatterns
列表用来存放路由映射表
path( ) 标准语法: (<>为必须的参数,[]为可选参数)
path(<route>, <view>, [name=None,**kwargs])
route 表示路径,从端口以后的URL地址,到结束
从 urlpattern 的第一项开始,按顺序依次匹配列表中的项,直到找到匹配的项。
view 表示route匹配成功后,需要调用的视图,view 必须是一个函数
name 表示别名,这个名字会应用在模板里,为什么要起名字呢,因为可能你url换了,但是只要名字没换,你就不需要改模板
**kwargs 表示一个字典,传给view函数。可以实现传参,这个我们下面一点讲
这里admin/就是路径,我们可以通过127.0.0.1:8000/admin访问这个地址,访问这个地址映射的view函数就是admin.site.urls
我们打开网址就可以看到admin后台登录的页面了
![807d098a7770d52ed613445bb560bbbf.png](https://img-blog.csdnimg.cn/img_convert/807d098a7770d52ed613445bb560bbbf.png)
admin.site可以理解成是Django内置的视图函数,其他情况我们需要自己写view视图函数,当包括其它 URL 模式时你应该总是使用include(),admin.site.urls是唯一例外。因为我们发现根目录下是没有views.py这个文件的,也就意味着不建议把view视图函数写在根目录下,我们需要写在应用目录下,每个应用目录下都有一个views.py以及urls.py,如果没有我们需要自己新建一下,先看下这时的目录结构,然后我们先用一个简单的视图函数来再看一下当如果指向应用下的view函数时,url映射应该怎么编写。
![7bf0cc639a51a958f1eed0ae2af91687.png](https://img-blog.csdnimg.cn/img_convert/7bf0cc639a51a958f1eed0ae2af91687.png)
我们在应用index的views.py里加入第一个函数,返回Hello World!
from django.http import HttpResponse
def index(request):
return HttpResponse('Hello World!')<