网站首页 文章专栏 来聊聊django1.8的urls 常用规则和参数命名
今天来和大家聊聊 python 的web 框架 django 的 url 匹配规则
再整理的过程,也能再温习一下,很喜欢 这个过程 。分享给他人,让别人从中获到益处。随便不忘给我留个言,告诉我很受用,是对我最大的鼓励
首先,先整理下理论,接下来再实践。
注: 本文用的版本为 python 3.5 django 1.8
未来,我会对django2.0 的url 匹配规则给大家做一个介绍
下面直接上代码,自己看,有注释
urls.py
from django.conf.urls import include, url from django.contrib import admin from testurls import views # 后面加上 '/$' django 会强制在url 加上 '/' # 比如: 输入http://127.0.0.1:8000/2018/01 按回车再看url 会在后面加上 '/' urlpatterns = [ # 首页 url(r'^$', views.index), # 文章列表 url(r'^articles/list',views.articlelist), # 按年份获取文章列表 {4} 表达只能是四个数字 url(r'^articles/([0-9]{4})/$', views.articleyeara), # 按月份获取文章列表 {2} 表达只能是二个数字 url(r'^articles/([0-9]{4})/([0-9]{2})/$', views.articlemonthb), # 你可能有这样的需求,想给url 参数命名,像下面这样 '+' 代表匹配 1个到无数个 url(r'^article/(?P<id>[0-9]+).html', views.articlecontent), # 两个命名参数,再在views 打乱顺序获取 url(r'^articles/page(?P<page>[0-9]+)/(?P<num>[0-9]+)', views.articlepagelist), # 按文章分类查找文章列表 url(r'^articles/label-(?P<label>\w+)/$', views.articlelabel), # url(r'^admin/', include(admin.site.urls)), ]
views.py
from django.http import HttpResponse def index(request): return HttpResponse('index') def articlelist(request): return HttpResponse('articlelist') # 传过来的参数都是字符串类型 def articleyeara(request, a): # 参数a 可为任意合法字符串 return HttpResponse(a + '年文章列表') def articlemonthb(request,a, b): # 参数a, b 可为任意合法字符串, 按url 顺序赋值 return HttpResponse(a + b + '月文章列表') def articlecontent(request, id): # 该参数year 必须 固定为year return HttpResponse('id 为' + id + '的文章内容文章列表') def articlepagelist(request, num, page): return HttpResponse('第' + page + '页,共获取到' + num + '文章') def articlelabel(request, label): return HttpResponse('标签为' + label + '文章列表')
想亲自试试运行结果 的同学,可在github 上面克隆下来运行实践
地址:https://github.com/zycfcn/django18urls