Django零基礎(chǔ)入門之路由path和re_path詳解
假設(shè)現(xiàn)在有個需求:
需要通過URL進行參數(shù)傳遞,我們該怎么做呢?
其中有個方法就是本文要講的內(nèi)容——path和進階版的re_path。
urls.py文件中的path和re_path
1.path的基本規(guī)則:
path('test/<xx>/',views.test)
第一個參數(shù)——test/<xx>/
:使用尖括號(<>)從url中捕獲值。包含一個轉(zhuǎn)化器類型(converter type)。沒有轉(zhuǎn)化器,將匹配任何字符串,當然也包括了/字符。
第二個參數(shù)——views.test
:當前面的url匹配成功后,就會調(diào)用后面的視圖函數(shù)。
但是有個問題就是使用尖括號從url中捕獲的值默認都是str類型,如果我們需要強制要求其為別的類型(比如:int型)該怎么辦呢?
這就用到了轉(zhuǎn)換器?。?!
2.默認支持的轉(zhuǎn)換器有:
str:匹配除了路徑分隔符(/)之外的非空字符串,這是默認的形式<str:xx>
int:匹配正整數(shù),包含0。slug:匹配字母、數(shù)字以及橫杠、下劃線組成的字符串。uuid:匹配格式化的uuid,如 075194d3-6885-417e-a8a8-6c931e272f00。(這是唯一的?。﹑ath:匹配任何非空字符串,包含了路徑分隔符 轉(zhuǎn)換器的作用:默認是str轉(zhuǎn)換器:所以如果不設(shè)置轉(zhuǎn)換器,那么接收到的一切值都是str字符串格式,如果要改變這個參數(shù)類型就使用到了轉(zhuǎn)換器!
需要注意的是:path中設(shè)置的參數(shù)名需要和視圖函數(shù)中調(diào)用的參數(shù)名一致?。?!
3.re_path正則匹配:
如果不做任何限制,瀏覽器中輸入的ULR的地址參數(shù)可以任意多,只要包括規(guī)定的路徑即可成功匹配!
——比如:re_path('hello',views.test5),
輸入路徑:127.0.0.1:8000/aaahelloaaaa都可成功匹配哦!
如果想限制為何path一樣的效果——URL中的路徑必須一模一樣,否則匹配不到,則需要使用正則語法:
——比如:re_path('^hello/$',views.test5)
,就只有輸入路徑127.0.0.1:8000/hello/才可成功匹配!
Django中實戰(zhàn)使用path和re_path
1.urls.py文件:
"""dj_test URL Configuration The `urlpatterns` list routes URLs to views. For more information please see: https://docs.djangoproject.com/en/2.1/topics/http/urls/ Examples: Function views 1. Add an import: from my_app import views 2. Add a URL to urlpatterns: path('', views.home, name='home') Class-based views 1. Add an import: from other_app.views import Home 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home') Including another URLconf 1. Import the include() function: from django.urls import include, path 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) """ from django.contrib import admin from django.urls import path,re_path #導入re_path,使用正則 from . import views urlpatterns = [ #主路由 path('admin/', admin.site.urls), path('test/', views.test), #路徑 關(guān)聯(lián)的視圖 path('test2/<name>/<int:age>/', views.test2), #變量默認接收的是字符串形式 改變格式是通過轉(zhuǎn)換器 <int:age>規(guī)定所接收的類型為int型 re_path('^test3/(?P<bb>[0-9]+)',views.test3) # 注意這個格式:test3是路徑固定參數(shù), bb是可以接受路徑中test3/后面參數(shù)的參數(shù)(任意0-9的數(shù)字)! ]
2.views.py視圖函數(shù)文件:
from django.shortcuts import render from django.http import HttpResponse # Create your views here. #視圖操作 def test(request):#函數(shù)視圖 return HttpResponse("這里是帥哥") #url傳參(url參數(shù)) def test2(request,name,age):#函數(shù)視圖 return HttpResponse("我叫%s,今年%s歲"%(name,age)) def test3(request,bb):#函數(shù)視圖 return HttpResponse("哈哈哈")
3.效果:
到此這篇關(guān)于Django零基礎(chǔ)入門之路由path和re_path詳解的文章就介紹到這了,更多相關(guān)Django path re_path內(nèi)容請搜索本站以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持本站!
版權(quán)聲明:本站文章來源標注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學習參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。