带命名空间的到底有啥用

带命名空间的到底有啥用

如图所示:

http://img1.sycdn.imooc.com//climg/5f03e24b0935937f07440151.jpg

这句代码的意思是嵌套一个oauth路径下的urls,并且给他一个命名空间叫做auth

http://img1.sycdn.imooc.com//climg/5f03e29609fe65a804390221.jpg

在index下面创建一个参数并赋值

那么问题来了,讲师最后说代码成功,输出了ok:/ article / 2020 /,并且控制台也显示/auth/index/,但是这难道不是上面的url反向转换和return HttpResponse('ok:' +url)的结果么,

将带命名空间那两句代码也就是url_auth=reverse('auth:index')
print(url_auth)

给注释掉也完全不影响最后的结果,还是和没有注释时输出结果一样

那么这里的命名空间有啥用?讲师最后说的成功了是指什么意思?是有什么网站的细节他忘说了么?


还有一个问题不能理解,

http://img1.sycdn.imooc.com//climg/5f03e466097f872b05270053.jpg这句代码表示嵌套了oauth包下的urls模块,该模块代码如图

http://img1.sycdn.imooc.com//climg/5f03e49e096f205504550200.jpg

对应的oauth下的views模块代码如图:

http://img1.sycdn.imooc.com//climg/5f03e4bf0959f37804390191.jpg

这里最后输出的结果为什么不是oauth包下的index方法输出oauth index ,而是text_django包下的index方法呢

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学,你好。

1、页面中显示的结果是return的内容,而控制台输出的结果同url_path的值。在视图函数中return HttpResponse()的是url,因此注释掉url_path语句是不影响页面显示结果的,只是在控制台没有相应的输出,同学也可以HttpResponse()中的参数写为url_path,输出结果为图3


http://img1.sycdn.imooc.com//climg/5f03ef4f0974ee7b04800178.jpg

http://img1.sycdn.imooc.com//climg/5f03f08409358f2808670381.jpghttp://img1.sycdn.imooc.com//climg/5f03f09f095cdbdc05620180.jpg

2、老师说的成功是指reverse成功了,添加了命名空间在使用reverse时,直接是reverse(命名空间namespace:name)即可,不同的应用可能会存在相同的url,为了避免使用reverse()方法出现反向解析错误,因此使用命名空间

3、在url中访问的是text_django的urls中的index,并不是ouath下的index,因此输出结果不是oauth idnex。同学在浏览器中访问http://127.0.0.1:8000/auth/index/即可

http://img1.sycdn.imooc.com//climg/5f03f1c709a7507703490130.jpg

如果我的回答解决了您的疑惑,请采纳!祝学习愉快~~~~

  • '为了避免使用reverse()方法出现反向解析错误,因此使用命名空间' 老师,您的这句话该怎么理解呢? 命名空间存在的意义是什么呢?是防止重名么? 还有这个格式,左边是namespace的名字,右边是嵌套的name么
    2020-07-07 17:01:15
  • 同学,你好。 1、在使用reverse()时,一般情况下参数写name对应的值即可,若多个app应用中url的name值是相同的,在反向解析时找不到对应的url进行解析,因此会出错误,此时加上命名空间即可以访问到对应的app中的url。 2、是的,冒号左边是namespace的值,右边是name的值 祝学习愉快~~~~
    2020-07-07 18:20:39
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
3.从网页搭建入门Python Web
  • 参与学习           人
  • 提交作业       218    份
  • 解答问题       3562    个

本阶段带你用Python开发一个网站,学习主流框架Django+Flask是Python Web开发的第一步,在基础知识上实现积分商城的项目开发,体验真实的项目开发流程,提高解决编程问题和效率的能力。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师