URL 配置 (URLconf) 就像 Django 所支撑网站的目录. 它的本质是 URL 模式以及要为该 URL 模式调用的视图函数之间的映射表; 你就是以这种方式告诉 Django, 对于这个 URL 调用这段代码, 对于那个 URL 调用那段代码.
- urlpatterns = [
- url(正则表达式, views 视图函数, 参数, 别名),
- ]
通过循环对于多个 url 匹配会从上到下, 匹配成功后就直接执行对应的视图函数, 直接 break 跳出循环
参数说明:
一个正则表达式字符串
一个可调用对象, 通常为一个视图函数或一个指定视图函数路径的字符串
可选的要传递给视图函数的默认参数(字典形式)
一个可选的 name 参数
无命名分组
- url(r'article/(\d{4})/(\d{2})',views.article_year) # 这里在正则表达式中加了 2 个分组, 相当于向 view 视图函数传递了两个参数
- def article_year(request,year,month): # 使用 year 和 month 变量接收了传递过来的两个参数
- return HttpResponse("year:%s month:%s" %(year,month))
命名分组
- url(r'article/(?P<year>\d{4})/(?P<month>\d{2})',views.article_year) # 在分组中加入? P < 命名>
- def article_year(request,year,month): # 必须使用 year 和 month 变量接收传递过来的两个参数, 因为 url 中命名是什么这里就使用什么名称
- return HttpResponse("year:%s month:%s" %(year,month))
一个可选的 name 参数
url(r'register',views.register,name='reg') # 给此 url 起别名为 reg
在模板文件中
<form action='{% url'reg'%}' # reg 就对应的 url 中的 register, 当 url 中的 register 变为其它路径, 不用再去修改模板文件
URL 分发
全局的 urls.py 文件
- from django.conf.urls import include, url
- urlpatterns = [
- url(r'^admin/', admin.site.urls),
- url(r'^blog/', include('blog.urls')), # blog / 开头的 url 全部去 blog app 中的 urls.py 文件中去找
- ]
在 app blog 中自己建立 urls.py, 用于处理该 app 中的路由关系
来源: http://www.bubuko.com/infodetail-2760771.html