django的url分配和url捕獲參數


django的url分配

  • 一般視圖模塊(views.py)都放在自己所屬的app目錄下,在app目錄下新建路徑模塊(urls.py),由app目錄下的urls.py來分配當前app的路徑。
  • 在app目錄下新建視圖函數
    1 from django.shortcuts import render, HttpResponse
    2 
    3 
    4 # Create your views here.
    5 
    6 
    7 def test(request):
    8     return HttpResponse("HELLO WORLD")
  • 然后再到app目錄下的urls.py中配置路由
    1 from django.urls import path
    2 from .views import *
    3 
    4 app_name = 'crm'
    5 
    6 urlpatterns = [
    7     path('test.html/', test),
    8 ]

    path方法里面有兩個參數,第一個是視圖函數的路由,第二個是該路由對應的視圖函數的函數名(注意是函數名,不要帶括號)

  • app_name是當前app名的字符串,防止在后面的path,repath中出現重復的url名而發生難以進行的區分和管理。
  • 最后帶項目跟目錄下配置該app的路徑,將app目錄里的urls.py包裹在項目根目錄下的urls.py里
    1 from django.contrib import admin
    2 from django.urls import path, include
    3 
    4 
    5 urlpatterns = [
    6     path('admin/', admin.site.urls),
    7     path('crm/', include('crm.urls')),
    8 ]

    這個path接受兩個參數,第一個是需要包含的app的名字,以"/"結尾, include里接受一個字符串("%s.urls" % app_name)

  • 最后啟動服務,在manager.py的同級目錄下 : python    manager.py    runserver   127.0.0.1:1234  (你能映射的ip地址)。 然后打開瀏覽器輸入:127.0.0.1:1234/crm/test.html即可看到視圖函數返回的頁面
  • path的完整規則:    path(route, view, kwargs=None, name=None)
  • route:是一個路由規則
  • view是視圖函數名
  • kwargs額外參數,是一個字典
  • name是url規則的名字

 

django在url中捕獲參數

  在urls.py(項目目錄下)定義url規則時使用變量名可以捕獲url中的值,傳遞給視圖

  • 到app下的view模塊中新建個帶有參數的視圖函數
    1 from django.shortcuts import render, HttpResponse
    2 
    3 # Create your views here.
    4 def test(request):
    5     return HttpResponse("HELLO WORLD")
    6 
    7 def index(request, pk):
    8     return HttpResponse("你輸入的參數是:%s" % pk)
  • 再到app下的urls.py中為這個函數配置路由,用<>包裹視圖函數中的參數
    1 from django.urls import path
    2 from .views import *
    3 
    4 app_name = 'crm'
    5 
    6 urlpatterns = [
    7     path('test.html/', test),
    8     path('index/<pk>/', index)
    9 ]

     注意每條路由都由"/"結尾

  • 最后啟動服務,在瀏覽器中輸入:127.0.0.1:1234/index/8, 返回想應得頁面

         

  • 注意:路由中的參數必須和視圖函數中的一致

  路徑轉換器

  當我們想約束參數的類型的時,可以使用路徑轉換器

  常見的路徑轉換器:

  • int:必須為整數
  • str:匹配除了"/"路徑分割符之外的所有的字符串
  • slug:匹配任意ASCII字符+連字符和下划線
  • uuid:格式化uuid
  • path:匹配任意非空字符

  轉換器用法:

path('index/<int:pk>/', index)

  注意:轉換器(int)和參數中的冒號之間不能有空格


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM