首页 综合布线 Django之url别名冲突解决方法-django的urls的path方法

Django之url别名冲突解决方法-django的urls的path方法

本文主要介绍Django之url别名冲突解决方法-django的urls的path方法,并为读者提供相关背景信息,以引起读者的兴趣,接下来就跟我们一起来了解一下吧,希望对您有所帮助。

Django之url别名冲突解决方法

命名url 空可以让不同app下的相同url别名互不冲突。

下面是一个案例来详细说明:

Django之url别名冲突解决方法-django的urls的path方法

如果有一个名为myproject的Django项目,那么这个项目中有两个应用程序:app01和app02。那么我们应该做这样的路线分配:

项目的总urls条目为/myproject/myproject/urls.py,其内容如下:

from django.contrib导入adminfrom django.urls导入路径,includeURL patterns =[path(' admin/',admin.site.urls),#后台管理系统 path ('app01/',include ('app01。URL '),), path ('app02/'),include ('app02。网址'),),]

app01下的urls条目是/myproject/app01/urls.py,其内容如下:

从django.urls导入路径从app01.views导入auth,viewapp _ name = ' app 01 ' #[/k0/]URL模式= [ path ('register/'),auth.register,name='register '), path('login/',auth.login,name='login '),path('logout/',auth.logout,name='logout '),path(' '

app02下的urls条目是/myproject/app02/urls.py,其内容如下:

从django.urls导入路径从app02.views导入auth,viewapp _ name = ' app 02 ' #[/k0/]URL模式= [ path ('register/'),auth.register,name='register '), path('login/',auth.login,name='login '),path('logout/',auth.logout,name='logout '),path(' '

请仔细看上面的案例。app01和app02下有url别名登录、注销和注册。那么Django在模板中的重定向函数、反向函数、url函数如何根据别名找到正确的url呢?

为了解决url别名命名冲突,Django引入了url命名空的概念。我们需要做的是理解它,并遵循Django的规则来解决url别名冲突。

首先:按照上面案例的方式写URL,把项目的urls.py和应用的urls.py分开写。

其次,在应用程序urls.py文件中添加一行app_name = app01 #,即应用app01的子目录名称。

最后;所有使用URL别名的地方都以“app01:login”的方式编写;

# reverse反向url解析函数:reverse(' app 01:log in ')reverse(' app 02:log in ')# redirect重定向函数:redirect(' app 01:index ')。# Django模板的url写为 {%URL' app01: logout'%}

上面的方法有点不方便,虽然在使用别名的时候app子目录的名称写的比较多。但是这种方法完全可以解决URL别名冲突。强烈建议一开始就按照这个规范来写项目。不要等到项目越做越大的时候,才发现很多现有的app用相同的url别名造成的bug。这个时候再做改动会很麻烦!

以上就是Django之url别名冲突解决方法的相关内容分享,字数约1583字,希望这对大家有所帮助!安防网往后会继续推荐Django之url别名冲突解决方法相关内容。

热门文章