參數的傳遞:
a:一種在是動態路由中傳遞多個參數。
b:一種通過get請求傳遞多個參數。
c:一種通過form表單形式提交給后台數據。
d:通過觸發相應的事件來觸發 ajax請求,給后端傳輸參數。
通過get請求往后端傳遞參數:
通過?參數名字=value&參數名字=value 來傳遞多個參數。django后台不需要進行參數的添加的,只需要通過request.GET.get(‘參數名字’)來獲取傳遞的參數。
code:
1 def div_page(request): 2 page_num=request.GET.get('page') 3 content=request.GET.get('content') 4 print(content) 5 print(page_num) 6 return HttpResponse(int(page_num))
url:
1 http://127.0.0.1:8000/page/?page=5&content=3
這種方式的傳遞參數,后端直接GET獲取,不需要在函數中定義額外的參數。較為靈活。
通過動態路由方式給后台傳遞參數,但是后端視圖中的views.py定義的函數中參數必須要有相應的參數接收,如果參數不全或者多,都會導致函數的報錯。相應的urls.py文件也要做相應的修改的。
code:
1 urlpatterns = [ 2 url(r'^admin/', admin.site.urls), 3 url(r'^test/', views.test), 4 url(r'^page/(\d+)$', views.div_page), 5 ] 6 7 def div_page(request,page): 8 print(page) 9 return HttpResponse(int(page))
url:
1 http://127.0.0.1:8000/page/2
傳遞多個參數:
1 urlpatterns = [ 2 url(r'^admin/', admin.site.urls), 3 url(r'^test/', views.test), 4 url(r'^page/(\d+)/(\d+)/', views.div_page), 5 ] 6 def div_page(request,page,page1): 7 print(page,page1) 8 return HttpResponse(page+page1)
url:
1 urlpatterns = [ 2 url(r'^admin/', admin.site.urls), 3 url(r'^test/', views.test), 4 url(r'^page/(\d+)/(\d+)/', views.div_page), 5 ]
需要注意的是:$的符號。這種方式保證在每次get的請求的時候都會傳輸參數。如果用 ?來攜帶的話,並不能保證請求必帶參數,需要在邏輯上做判斷。
form表單提交數據較為常見,通過POST給后端發送數據。在提交數據的時候,會刷新頁面,比較不友好。
ajax請求的提交數據:可以說是"偷偷的給后端發送請求數據。"方式可以是get、也可以是post.需要注意的是:后端返回的數據必須為字符串形式。才能被ajax接收。這種方式的提交數據較為常見!也是我們經常使用的方式。
