在你主路由的urls.py中,最初有提供的注释,都很有用,不要轻易删,如果看着碍事就把它隐藏起来
大致说的就是,你要绑定一个子路由的URL配置, 需要引入一个库,并且代码按照它给的方式写。
首先要先明确几点
- 路由不能直接被访问,需要映射
- 子路由只管子路由下的其他链接
主路由中的代码如下:
from django.urls import path, re_path,include
urlpatterns = [
path('admin/', admin.site.urls),
#将主路由和子路由绑定
path('book/', include('book.book_urls')), #就已经匹配到了book这个位置
]
子路由(子应用book下的urls.py)中的代码如下:(你既然使用的子路由,访问的视图函数肯定是要写在子应用中的views.py中)
from django.urls import re_path
from book.views import index, detail #需要调用这些函数,就得先导入进来
urlpatterns =[
#name用于给视图命名,可以通过reverse()反向解析
re_path(r'^$',index,name="书的首页"),
re_path(r'^detail/(?P<id>\d+)/$',detail,name="书的详情页")
]
子应用book下的views.py中的代码如下:
from django.http import HttpResponse
# Create your views here.
#书应用下的首页
def index (request):
return HttpResponse("书的首页")
#书的详情展示界面
#url?id=xxx
#url/888
def detail(request,id):
return HttpResponse("书的详情页 ID:{}".format(id))
运行结果如图:
注意:
- 一定要分清,在你主路由的时候,匹配到了哪个路径,然后在子路由中接着写,要不就乱套了
不知道大家有没有注意到有一个文件叫作:_init_.py,尝试一下你会发现,这个文件只被执行一次,所以像数据库之类的,只需要被执行一次的代码,就可以放在这里(好像是用来放源码的)