1. 程式人生 > >Django中url詳解

Django中url詳解

url對映:

1,為什麼Django中的所有url都寫在urls.py檔案中呢,又為什麼Django 又會去urls.py中尋找對映呢?
因為在‘settings.py’檔案中配置了’ROOT_URLCONF’為‘urls.py’。所以Django會去urls.py中尋找,而且我們也必須把所有的url寫在urls.py檔案中。
2,在’url.py’中所有的對映,都應該放在‘urlpatterns’這個列表中。
3,所有的對映不是隨便寫的,而是用‘path‘函式或者是’re_path’函式進行包裝的。

url傳引數:

1,url中使用變數的方式:在path的第一個引數中,使用==<引數名>==的方式可以傳遞引數。然後在views.py檔案中的函式也要對應引數。
注意

:views.py檔案中的引數必須和url中的引數名稱保持一致,否則會找不到引數。另外,url中是可以傳遞多個引數的。
示例程式碼:
views.py檔案中

from django.http import HttpResponse

def book_detail(request,book_id):
    text = "你獲取的圖書id是:%s" % book_id
    return HttpResponse(text)

urls.py檔案中:

from django.urls import path
from book import views

urlpatterns =
[ path('book/detail/<book_id>',views.book_detail), ]

在瀏覽器中輸入下面網址檢視效果。

http://127.0.0.1:8000/book/detail/10

最後面的數值就是傳遞的引數,是可以隨便改的。

2,採用 查詢字元竄 的方式:在url中不需要單獨寫匹配查詢字元竄的那部風,只需要在輸入輸入網址的時候最後面輸入 ?引數名=引數值,中間也不能有空格,否則會獲取不到想要獲取的值。在views.py中的函式使用 request.GET.get('引數名稱')或者request.GET.[引數名稱]來獲取
示例程式碼如下:

views.py中的程式碼

from django.http import HttpResponse

def author_detail(request):
    #author_id = request.GET['id']  兩種方法獲取引數
    author_id = request.GET.get('id')
    text = "作者的id是: %s" % author_id
    return HttpResponse(text)

urls.py中的程式碼

from django.urls import path
from book import views

urlpatterns = [
	path('admin/', admin.site.urls),
    path('book/author/',views.author_detail)
]

執行專案,在瀏覽器中輸入

http://127.0.0.1:8000/book/author/?id=10

就能夠看到效果了,id後面的值也是可以改變的。