django教程 引數傳遞(GET方式)

2021-08-14 14:57:22 字數 3444 閱讀 8636

web開發過程中最常見的兩種引數傳遞方式為get和post,今天我們就來了解下django中如何使用get進行引數傳遞。

django中get引數具有兩種傳遞方式,一種為傳統的』?'形式傳參,一種為正則匹配引數傳遞。

web中最常見的傳參方式為』?『問號後引數,例如/plist/?p1=china&p2=2012,其中p1,p2為鍵值,』='後為傳遞的引數值,在後台通過鍵值來獲取對應的引數值。下面我們就通過乙個例子來簡單的展示下django中如何使用此種傳參的方式。

我們先新建乙個工程

return httpresponse('str='+str+'&page='+page)然後在urls.py中配置路由,**如下

from django.conf.urls import patterns, include, url

from django.contrib import admin

urlpatterns = patterns('',

# examples:

# url(r'^$', 'postparams.views.home', name='home'),

# url(r'^blog/', include('blog.urls')),

url(r'^admin/', include(admin.site.urls)),

url(r'^params_test/$',params_test)

)

然後同步建立資料庫

python manage.py migrate  #django1.7及以後

python manage.py syncdb #django 1.7以前

然後執行伺服器

python manage.py runserver
django中的路由系統是通過正規表示式進行匹配的,即在urls.py配置不同的正則表達攔截然後傳遞到對應的view函式中,如上面

from django.conf.urls import patterns, include, url

from django.contrib import admin

urlpatterns = patterns('',

# examples:

# url(r'^$', 'postparams.views.home', name='home'),

# url(r'^blog/', include('blog.urls')),

url(r'^admin/', include(admin.site.urls)),

url(r'^params_test/$',params_test)

)

def params_test_reg(request,str,page):

return httpresponse('str='+str + '&page=' + page)

,然後我們修改urls.py**如下

from django.conf.urls import patterns, include, url

from django.contrib import admin

urlpatterns = patterns('',

# examples:

# url(r'^$', 'postparams.views.home', name='home'),

# url(r'^blog/', include('blog.urls')),

url(r'^admin/', include(admin.site.urls)),

url(r'^params_test/$',params_test),

url(r'^params_test_reg/str(\w+)page(\d+)/$',params_test_reg),

)

再次執行伺服器,在瀏覽器輸入

即可看到後台正確接收到了傳遞的引數。

我們可以看到,在url正規表示式通過』()『來匹配傳遞的引數,如』(\w+)'代表匹配字串,如果不了解正規表示式建議先去看下正規表示式,然後在檢視函式的形參中加入對應數量的引數(必須在檢視函式的形參中接收),即可在後台接收到傳入的引數,他會根據對應的順序依次賦值。當然我們也可以在匹配引數過程中指定對應的形參名稱,接下來繼續看**。

修改urls.py如下:

from django.conf.urls import patterns, include, url

from django.contrib import admin

urlpatterns = patterns('',

# examples:

# url(r'^$', 'postparams.views.home', name='home'),

# url(r'^blog/', include('blog.urls')),

url(r'^admin/', include(admin.site.urls)),

url(r'^params_test/$',params_test),

url(r'^params_test_reg/str(?p\w+)page(?p\d+)/$',params_test_reg),

)

然後修改params_test_reg函式形參順序

def params_test_reg(request,page,str):

return httpresponse('str='+str + '&page=' + page)

重新啟動伺服器,在瀏覽器輸入

,我們會發現引數還是正確接收啦。

好了,本節到此結束,通過本節大家學會了如何在python中使用get進行引數傳遞,下一節我將會繼續和大家一起**post引數的傳遞以及表單的提交。

get傳遞陣列引數

get請求時傳遞的引數有乙個是陣列時,要做序列化處理。下面是不需要用外掛程式就可以解決的方法 axios有乙個方法 paramsserializer,可以處理params的陣列 下面舉例 vue檔案裡請求時傳的是三個引數 methods getdata para then res 封裝的api檔案 ...

Django 位址傳遞引數

示例 例如,url中 之後表示傳遞的引數,這裡傳遞了p1和p2兩個引數 桌球path r gamelist views.gamelist,name gamelist 只寫?之前的那些就行,多了就不對了 獲取引數用request.get.get def gamelist request context...

django 引數傳遞方法總結

1 無引數情況 配置url及其檢視如下 訪問輸出結果為 hello world 2 傳遞乙個引數 配置url及其檢視如下,url中通過正則指定乙個引數 訪問輸出結果為 the param is china 3 傳遞多個引數 參照第二種情況,以傳遞兩個引數為例,配置url及其檢視如下,url中通過正則...