分组
项目里的ulrs文件
from django.contrib import admin
from django.urls import path,re_path
from app01 import views
urlpatterns = [
path('admin/', admin.site.urls),
path('timer/', views.timer),
# 路由配置:
# 路径对应相关试图处理,
# 正则表达式,注意2003匹配第一个,不往下匹配
# path引入后添加一个re_path
re_path(r'^articles/2003/$', views.special_case_2003),
re_path(r'^articles/([0-9]{4})/$', views.year_archive),
# 分组匹配成功,调用函数会传入多个参数,
# 因此view里定义时要注意形参个数,year-archive(request,1999)
re_path(r'^articles/([0-9]{4})/([0-9]{2})/$', views.month_archive),
re_path(r'^articles/([0-9]{4})/([0-9]{2})/([0-9]+)/$', views.article_detail),
# 有名分组 ?P<名字> 相当于关键字传参,此时函数定义形参时命名一致。
re_path(r'^articles/(?P<year>[0-9]{4})/$', views.year_archive),
re_path(r'^articles/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/$', views.month_archive),
re_path(r'^articles/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/(?P<day>[0-9]{2})/$', views.article_detail),
]
应用里的views文件
from django.shortcuts import render,HttpResponse
# 文件自己引入的,在后面添加 HttpResponse 响应对象
def timer(request):
# 文件会把浏览器请求信息作为参数request值传入,在此要接收request
import time
ctime = time.time()
return render(request, "timer.html", {"ct": ctime})
# render方法自动去找html文件,注意传入的ctime是字典格式
# 路由配置
def special_case_2003(request):
# 响应体的内容
return HttpResponse("special2003")
def year_archive(request,year):
return HttpResponse('year...')
def month_archive(request,year,month):
pass
def article_detail(request,year,month,num):
pass
分发
根据全局urls文件路径分发到各个应用的urls文件里,每个urls文件里可以再分组匹配不同的路径视图。
urls全局文件
from django.contrib import admin
from django.urls import path,re_path,include # include引入
from app01 import views
urlpatterns = [
path('admin/', admin.site.urls),
path('timer/', views.timer),
# 分发 除了全局的,把各自应用单独的放在各自新建文件夹urls里
re_path(r"app01/",include("app01.urls")) # 匹配路径之后,include各自的urls文件里执行
]
app01 urls
urlpatterns = [
# 有名分组 ?P<名字> 相当于关键字传参,此时函数定义形参时命名一致。
re_path(r'^