参数的传递:
a:一种在是动态路由中传递多个参数。
b:一种通过get请求传递多个参数。
c:一种通过form表单形式提交给后台数据。
d:通过触发相应的事件来触发 ajax请求,给后端传输参数。
通过?参数名字=value&参数名字=value 来传递多个参数。django后台不需要进行参数的添加的,只需要通过request.GET.get(‘参数名字’)来获取传递的参数。
views.py:
#url:
#http://127.0.0.1:8000/page/?page=5&content=3 #通过?参数名字=value&参数名字=value 来传递多个参数
#urls.py
......
#views.py:
def div_page(request):
page_num=request.GET.get('page') #GET方法直接获取url通过?参数名=value,page_num=5
content=request.GET.get('content') #GET方法直接获取url通过?参数名=value,content=3
print(content)
print(page_num)
return HttpResponse(int(page_num)+int(content))
#html
#使用{{ page_num }} 获取views.py参数
url:
http://127.0.0.1:8000/page/?page=5&content=3
这种方式的传递参数,后端直接GET获取,不需要在函数中定义额外的参数。较为灵活。
通过动态路由方式给后台传递参数,但是后端视图中的views.py定义的函数中参数必须要有相应的参数接收,如果参数不全或者多,都会导致函数的报错。相应的urls.py文件也要做相应的修改的。
urls.py:
urlpatterns = [
path(r'^admin/', admin.site.urls),
path(r'^test/', views.test),
path(r'^page/(\d+)$', views.div_page), #(\d+) 就是url传递过来的2
]
VIEWS.PY
def div_page(request,page): #url传递过来的参数是2
print(page)
return HttpResponse('接收到URL的参数是:'+str(int(page)))
url:
http://127.0.0.1:8000/page/2
urls.py:
urlpatterns = [
path(r'^admin/', admin.site.urls),
path(r'^test/', views.test),
path(r'^page/(\d+)/(\d+)/', views.div_page),
]
views.py:
def div_page(request,page,page1):
print(page,page1)
return HttpResponse(page+page1)
url:
http://127.0.0.1:8000/page/2/4/
需要注意的是:$的符号。这种方式保证在每次get的请求的时候都会传输参数。如果用 ?来携带的话,并不能保证请求必带参数,需要在逻辑上做判断。
form表单提交数据较为常见,通过POST给后端发送数据。在提交数据的时候,会刷新页面,比较不友好。
ajax请求的提交数据:可以说是"偷偷的给后端发送请求数据。"方式可以是get、也可以是post.需要注意的是:后端返回的数据必须为字符串形式。才能被ajax接收。这种方式的提交数据较为常见!也是我们经常使用的方式。