url命名与反转

url是经常变化的,可以给url取一个名字,变动后可以直接反转,不用修改太多代码。
例子:再APP的前端,访问网站首页时若没有登录时自动跳转到登录页面。
①APP的view.py函数写好后,在url.py中路径添加一个name参数,用来标志这个页面。

1
urlpatterns=[ path('path',function,name='login') ]

②view.py中使用反转获取

1
2
3
from fjango.shorcuts import redirect,reverse
login_url=reverse('login') #实际上返回值为path路径名
redirect(login_url) #返回此path的页面

命名空间

应用命名空间:在多个APP中,可能产生多个同名url,为了避免url反转时出现混淆,使用应用命名空间
在APP的url.py中定义一个变量

1
app_name='APPname'

反转时使用应用命名空间

1
login_url=reverse('APPname:login')

实例命名空间:解决一个函数实例化为多个实例时,带来的实例页面跳转错误问题
在项目的urls.py中添加一个’namespace’变量,如:

1
2
3
urlpatterns=[ path('path1',include('cms.culs',namespace('cms1')), 
path('path2',include('cms.culs',namespace('cms2'))
]

在函数中获取实例名:
1
namespace=request.resolver_math.namesoace

最后更新: 2019年08月22日 15:26

原始链接: https://LiYuanSh.github.io/2019/04/13/Django/

× 请我吃糖~
打赏二维码