Django URL映射规则与请求响应流程详解
本文深入解析Django框架中URL映射的核心机制与服务器响应顺序。涵盖Python模块搜索路径、URL正则匹配规则(包括锚点符号与斜杠处理)、根目录配置方法,以及从浏览器发起请求到返回HTTP响应的完整执行步骤,帮助开发者掌握Django路由配置的关键细节。
Django模块搜索路径
1、Django模块搜索路径
当使用 import 语句导入模块时,Python 会按照系统目录清单进行查找。
查看方式:
import sys
print sys.path
通常无需手动干预 Python 的搜索路径设置,Python 和 Django 会在后台自动完成相关配置。
URL匹配模式详解
2、URL匹配模式
基本结构:
'^需要匹配的url字符串$'
注意:最终完整的 URL 字符串由系统自动添加的部分'http://根路径:端口号/'与匹配模式拼接而成。
系统自动添加的部分'http://根路径:端口号/'
例如:URL匹配模式:'^latest_books/$'
最终完整的 URL 字符串:'http://127.0.0.1:8000/latest_books/'
1)^:用于匹配“子串头”。
示例:
'^latest_books/'
'http://127.0.0.1:8000/latest_books/',
'http://127.0.0.1:8000/latest_books/test1/',
'http://127.0.0.1:8000/latest_books/test2/',
'http://127.0.0.1:8000/latest_books/test1/aaa/'
以下 URL 均会被匹配上。
2)$:用于匹配“子串结尾”。
示例:
'latest_books/$'
'http://127.0.0.1:8000/latest_books/',
'http://127.0.0.1:8000/updir_1/latest_books/',
'http://127.0.0.1:8000/updir_2/latest_books/'
以下 URL 均会被匹配上。
3)子串末尾是否包含'/'
默认情况下必须添加斜杠(这是 Django 开发者的基本习惯),如果不添加将会出现如下情况:
from django.conf.urls import patterns, url, include
urlpatterns = patterns('',
(r'^latest_books$', 'django_web_app.views.latest_books'),
)

如果子串末尾不想包含'/',可在 setting.py 中添加设置:APPEND_SLASH=False
但是必须安装了 CommonMiddleware 中间件才会起作用。
4)手动配置网站“根目录”
在不手动配置网站“根目录”对应“视图函数”的情况下,会出现如下情况:
手动配置“根目录”对应“视图函数”:
a) urls.py
from django.conf.urls import patterns, url, include
urlpatterns = patterns('',
(r'^$','django_web_app.views.home_page'),
(r'^latest_books/$', 'django_web_app.views.latest_books'),
)
b) views.py
def home_page(request):
return render_to_response('home_page.html')
c) home_page.html
<!DOCTYPE html>
<html>
<head>
<title>my home page</title>
</head>
<body>
<h1>This is home page, welcome !</h1>
</body>
</html>
运行结果:
附:正则表达式基础

服务端响应URL请求的执行顺序
3、服务端响应 URL 请求的执行顺序
1)项目结构
django_web
__init__.py
settings.py
urls.py
wsgi.py
django_web_app
__init__.py
admin.py
models.py
tests.py
views.py
templates
home_page.html
latest_books.html
manage.py
2)执行顺序
a)启动服务端——python manage.py runserver
获取 setting.py 文件中的配置,主要包括:
URL 映射关系文件路径:
ROOT_URLCONF = 'django_web.urls'
页面文件模板路径:
TEMPLATE_DIRS = (
os.path.join(BASE_DIR, 'templates'),
)
数据库配置:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'django_db',
'USER': 'root',
'PASSWORD': 'feng',
'HOST': '127.0.0.1',
'PORT': '3306',
}
}
b)响应顺序
第一步:浏览器提交请求
http://127.0.0.1:8000/latest_books/
第二步:服务端根据请求的 URL 在 urls.py 中进行匹配,并找到对应的“视图函数”
第三步:调用对应的“视图函数”
返回一个 HttpResponse 对象
第四步:Django 转换 HttpResponse 对象为一个适合的 HTTP response,并返回给页面进行显示
到此这篇关于 Django 中 URL 映射规则和服务端响应顺序的实现的文章就介绍到这了,更多相关 Django URL 映射规则和服务端响应顺序内容请搜索本站以前的文章或继续浏览下面的相关文章,希望大家以后多多支持本站!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













