4.6、Django - URL之URL分層模組化
阿新 • • 發佈:2018-12-14
1、URL分層模組化
當網頁中內容較多,將網頁中的URL全部寫在一個檔案中,必然不好管理 。
預設的APP下是不含url.py
檔案(如下圖douAPP專案下的APP為douBook的內容) ,可以通過在每個APP下構建url.py
檔案 ,解決URL分層模組化管理。
2、示例
在douAPI專案APP為douBook的views.py中:
from django.shortcuts import render
# Create your views here.
#
from django.http import HttpResponse
def book_info (request):
return HttpResponse("圖書詳情")
def book_info_detail(request,book_id):
# 從資料庫中拿book_id,省略
your_book_id = 'your book id is :{book_id}'.format(book_id = book_id)
return HttpResponse(your_book_id)
# 注意book_author_detail函式與book_info_detail(request,book_id)的區別,前者的除了request引數寫在括號內,其餘不寫,在函式體內部體現
def book_author_detail(request):
# 從資料庫中拿id
author_id = request.GET.get('id') # 或者author_id = request.GET['id']
content = "Author's id of the book is : {input_id}".format(input_id = author_id)
return HttpResponse(content)
def book_publisher_id(request,publisher_id):
content = "Publisher's id of the book is : {input_id}" .format(input_id = publisher_id)
return HttpResponse(content)
在專案douAPI下的url.py中:
from django.urls import path,include
from douBook import views
from django.urls import converters
urlpatterns = [
# include中的路徑是相對於專案所在的目錄
path('douBook/', include('douBook.urls')),# 將douBook開頭的連結轉到APP為douBook的urls.py匹配
]
在專案douAPI下的APP為douBook的APP下的url.py中:
from django.urls import path
from douBook import views
from django.urls import converters
urlpatterns = [
path('', views.book_info),
path('detail/<book_id>/', views.book_info_detail),
path('author/', views.book_author_detail),
path('publisher/<publisher_id>/', views.book_publisher_id),
]
結果如下:
3、總結
1、url模組化是為了方便管理,即將每個APP中各建立自己的urls.py
檔案 。
2、在專案下有一個總的urls.py
檔案,這個檔案的主要作用是將每個APP去找各自的urls.py
檔案,在該檔案中,應該使用include
函式包含urls.py
,且是相對於專案路徑 。
3、在APP中的urls.py
檔案,所有的匹配也應該放在urlpatterns
中 。
4、最終的url
是根據主url.py
和APP的url.py
進行拼接的,因此,不可多加或少加/
。