urls.py文件中的这些地址,称为url路由,就是url地址。如何通过url路由,向视图函数(Function views)传递参数。
# urls.py文件中:
path('args/',views.params_first)
在views.py中的设置
def params_first(request):
# 直接从GET请求中获取参数。
user_name = request.GET.get('user','')
pass_word = request.GET.get('pwd','')
result = '账号:{}, 密码:{}'.format(user_name,pass_word)
return HttpResponse(result)
浏览器,如图:
2. 参数不再以?的形式进行拼接,而是以路径的形式传递,视图函数如何接受参数?
/(\d+)/(\w+)/就是视图函数传递的两个参数。
视图函数想要接收,在函数中必须声明两个形参(形参名称任意设定)来接收者两个参数。
#urls.py:
re_path(r'^params/(\w+)/(\d+)/$',views.params)
# views.py
def params(request, name, pwd):
print(type(name))
result = 'name={},pwd={}'.format(name,pwd)
return HttpResponse(result)
将re_path转换成path()的写法:params1必须声明两个参数(参数的名称必须和路由中指定的参数名称保持一致)
<> 是用来匹配参数的
<>中的参数是可以指定转换器的,转换器的作用就是对拦截到的参数进行转换在传递给视图,比如类型的转换,值得转换等
默认的转换器是str
# urls.py:
path('params1///',views.params1)
# views.py:
def params1(request, username, password):
result = 'name={},pwd={}'.format(username,password)
return HttpResponse(result)
3. path()函数处理上述将参数之间以路径的形式传递给视图函数,也可以采用如下方法传递参数。
params2()需要设置形参,形参的名称和字典的键保持一致
urls.py:
path('params2/',views.params2,{'user':'lisi','pwd':'234'})
views.py:
def params2(request, user, pwd):
result = 'name={},pwd={}'.format(user,pwd)
return HttpResponse(result)
4. re_path()这种url路由,如何指定参数的名称。而上面的re_path中,参数的名称可以任意设定。
?P: 是指定参数名称的固定格式。
、就是形参的名称,此时视图函数params3()的形参必须和id、username保持一致
\d+ :表示将\d+匹配到的数字参数,赋值给形参id。
\w+ :白色将\w+匹配到的字符参数,赋值给形参username。
urls.py:
re_path(r'^params3/(?P\d+)/(?P\w+)/$',views.params3)
views.py:
def params3(request,id,username):
result = 'id={},username={}'.format(id,username)
return HttpResponse(result)