DjangoCourse(二: 通过url路由,向视图函数传递参数)
2018-10-17 21:12
1046 查看
urls.py文件中的这些地址,称为url路由,就是url地址。如何通过url路由,向视图函数(Function views)传递参数。
- 直接在浏览器的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'})
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)
def params3(request,id,username): result = 'id={},username={}'.format(id,username) return HttpResponse(result)
阅读更多
相关文章推荐
- Django通过URL传递参数的4种方法
- django通过url传递参数(编辑操作页面)
- URL中传递参数给视图函数
- Django中传递参数到URLconf的视图函数中的方法
- Django中传递参数到URLconf的视图函数中的方法
- Django通过URL传递参数的4种方法
- Django笔记 通过URL传递参数的4种方法 + 补充
- 通过路由url携带参数进行参数传递
- javascript通过url向jsp页面传递中文参数乱码解决方法(两次编码,一次解码)
- ASP.NET页面通过URL传递参数(一)(转载)
- 【Django】url传递参数
- java中通过url传递中文参数,取值是乱码的解决办法
- django url路由参数错误
- Django URL传递参数的方法总结
- Portlet 通信(五) 通过 URL 传递参数
- javascript通过url向jsp页面传递中文参数乱码解决方法
- 通过URL传递参数的一个有趣的意外
- Django URL传递参数的方法总结
- 通过注册的URL Scheme向目标APP传递参数
- javascript通过url向jsp页面传递中文参数乱码解决方法