人妖在线一区,国产日韩欧美一区二区综合在线,国产啪精品视频网站免费,欧美内射深插日本少妇

新聞動(dòng)態(tài)

Python Django獲取URL中的數(shù)據(jù)詳解

發(fā)布日期:2021-12-16 15:54 | 文章來源:腳本之家

Django獲取URL中的數(shù)據(jù)

URL中的參數(shù)一般有兩種形式。如下所示:

1. https://zy010101.blog.csdn.net/article/details/120816954
2. https://so.csdn.net/so/search?q=Django&t=blog&u=zy010101

我們將第一種形式稱為“URL路徑參數(shù)”;第二種形式稱為“URL關(guān)鍵字形式”。下面講述如何在Django中獲取這兩種形式的數(shù)據(jù)。

URL路徑參數(shù)

使用path函數(shù)

from django.urls import path
from . import views
urlpatterns = [
 path('articles/2003/', views.special_case_2003),
 path('articles/<int:year>/', views.year_archive),
 path('articles/<int:year>/<int:month>/', views.month_archive),
 path('articles/<int:year>/<int:month>/<slug:slug>/', views.article_detail),
]

關(guān)于這段URL的解釋說明,直接參考Django官方文檔即可。

為了防止有時(shí)候進(jìn)不去文檔,我將官方文檔也直接貼在下面:

使用re_path函數(shù)

如果,使用path函數(shù)并不能滿足你匹配URL的要求,那么可以使用re_path函數(shù)來使用正則表達(dá)式來匹配URL路徑中的參數(shù)。需要注意在Django中,使用正則表達(dá)式來獲取分組中的值的語法是(?P<name>pattern),其中 name 是組名,pattern 是要匹配的模式。

from django.urls import path, re_path
from . import views
urlpatterns = [
 path('articles/2003/', views.special_case_2003),
 re_path(r'^articles/(?P<year>[0-9]{4})/$', views.year_archive),
 re_path(r'^articles/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/$', views.month_archive),
 re_path(r'^articles/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/(?P<slug>[\w-]+)/$', views.article_detail),
]

這段URL配置的說明可以參考使用正則表達(dá)式

同樣,為了防止有時(shí)候進(jìn)不去文檔,我將官方文檔也直接貼在下面:

需要特別注意的是,正則表達(dá)式進(jìn)行匹配之后,捕獲的參數(shù)都作為字符串傳遞給視圖函數(shù)(視圖類)。

URL關(guān)鍵字形式

通常,除了在URL路徑中傳遞數(shù)據(jù),也可以在URL參數(shù)中進(jìn)行數(shù)據(jù)傳遞。例如:

http://www.demo.com/index?keys=123&values=qwe

這段URL傳遞了參數(shù)keys和values,它們的值分別是123,qwe.

在此之前,先來介紹一下前備條件QueryDict。

HttpRequest對象的屬性GET、POST都是QueryDict類型的對象

Django獲取URL關(guān)鍵字參數(shù)可以通過HttpRequest.GET屬性來獲取。例如:

def test(request):
 a = request.GET.get("a")
 b = request.GET.get("b")
 c = request.GET.get("c")
 a_all = request.GET.getlist("a")
 res = a+'<br>'+b+'<br>'+c+'<br>'+str(a_all)
 return HttpResponse(res)

現(xiàn)在使用如下的URL進(jìn)行請求:

http://127.0.0.1:8008/test?a=1&a=2&b=3&c=4

頁面顯示如下所示:


查詢字符串不區(qū)分請求方式,即假使客戶端進(jìn)行POST方式的請求,依然可以通過request.GET獲取請求中的查詢字符串?dāng)?shù)據(jù)。

總結(jié)

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注本站的更多內(nèi)容!

版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。

相關(guān)文章

實(shí)時(shí)開通

自選配置、實(shí)時(shí)開通

免備案

全球線路精選!

全天候客戶服務(wù)

7x24全年不間斷在線

專屬顧問服務(wù)

1對1客戶咨詢顧問

在線
客服

在線客服:7*24小時(shí)在線

客服
熱線

400-630-3752
7*24小時(shí)客服服務(wù)熱線

關(guān)注
微信

關(guān)注官方微信
頂部