您的位置:首页 > 编程语言 > Go语言

DjangoCourse(二: 通过url路由,向视图函数传递参数)

2018-10-17 21:12 1046 查看

urls.py文件中的这些地址,称为url路由,就是url地址。如何通过url路由,向视图函数(Function views)传递参数。

  1. 直接在浏览器的url后,使用?和&符号拼接参数,视图函数应如何接受参数?
# 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/<username>/<int:password>/',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<id>\d+)/(?P<username>\w+)/$',views.params3)

views.py:

def params3(request,id,username):
result = 'id={},username={}'.format(id,username)
return HttpResponse(result)

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: