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中通過正則...