当一个用户请求一个URL时,Django会使用一个叫做URLconf的机制来决定如何处理这个请求。URLconf是一系列模式与响应函数之间的映射。当Django收到一个请求后,它会从URLconf的最上层开始,依次尝试匹配每个url pattern,直到找到一个符合请求的pattern为止。当一个match被找到后,Django就会调用与这个pattern相关联的函数,并把HTTP request对象以及任意附加的URL参数传递给它。
下面是Django url路由匹配的一些示例说明:
示例一:最基础的URLconf配置
在app的urls.py文件中,定义一个过滤掉所有请求的正则表达式pattern,映射到一个名为start的函数。
from django.urls import re_path
from .views import start
urlpatterns = [
re_path(r'^$', start, name='start'),
]
这段代码的意思是,当用户请求根目录时,Django会调用start函数进行处理。r'^$'是一个正则表达式,它匹配空字符串。这个正则表达式通过re_path函数注册到urlpatterns中,成为了一个URLpattern(URL模式)。
示例二:传递参数给视图函数
在app的urls.py文件中,定义一个正则表达式pattern,匹配一个由数字组成的参数,映射到一个名为detail的函数。
from django.urls import re_path
from .views import detail
urlpatterns = [
re_path(r'^article/(?P<article_id>\d+)/$', detail, name='detail'),
]
这段代码的意思是,当用户请求/article/
如URL路径/article/123/就会被匹配到这个pattern,article_id的值就会被设置为123,这个值将作为参数被传给detail函数。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Django url 路由匹配过程详解 - Python技术站