django学习-URL Dispatcher
django学习--URL Dispatcher
干净的URL非常重要,django对此提供了充分的支持。
django使用URLConf模块匹配请求的URL对应哪个function,URLConf是一个普通的python moudle。
URLConf模块实例(urls.py):
from django.conf.urls.defaults import * urlpatterns = patterns('', (r'^articles/2003/$', 'news.views.special_case_2003'), (r'^articles/(\d{4})/$', 'news.views.year_archive'), (r'^articles/(\d{4})/(\d{2})/$', 'news.views.month_archive'), (r'^articles/(\d{4})/(\d{2})/(\d+)/$', 'news.views.article_detail'), )
django对接收到的请求url的路由流程:
- 决定使用哪个URLConf模块,默认使用的URLConf为urls.py模块,定义在settings.py中的ROOT_URLCONF中。
- django加载URLConf模块,并且查找名为urlpatterns对象,该对象是一个list型对象。
- 对urlpatterns遍历并依次匹配,返回第一条匹配的记录
- 返回的记录中包含URL匹配的python view function,django调用此function,并将HttpRequest对象以及其他参数作为函数调用的参数传入