存在问题:Django项目里多个app目录共用一个urls容易造成混淆,后期维护也不方便。
解决:使用路由分发(include),让每个app目录都单独拥有自己的 urls。
# 1.单一路由
urlpatterns = [
path('blog/', views.index),
path('page/2/',views.page),
path('page/2.html',views.page),
]
# 2.正则匹配路由
urlpatterns = [
url(r'^blog/$', views.index),
url(r'^page/(\d+)/$',views.page), # (\d+)需要使用小括号把\d+作为一个组括起来,方便视图处理参数
url(r'^page/(\d+).html$',views.page),
url(r'^page/([a-zA-Z]+)/$',views.page), # ([a-zA-Z]+)作为一个组,需要视图函数用参数接受才能匹配
]
# 用视图回应此路由:url(r'^page/(\d+)/$',views.page)
def test1(request, num): # 这里使用num来接收(\d+),然后根据接受的数字返回对应的数据
return HttpResponse('这是python自学网')
def test2(request, num):
cls = Class.objects.get(id=num)
return render(request, 'test.html', {'cls': cls})