05.URL路由进阶应用

一.URL的name属性

 如图所示,面对这样的问题就需要使用name属性来解决

1.项目的结构如下

2.name属性的使用

views.py

注意:在urls.py中设置了name属性之后,reverse就是看到所给的name属性值之后反过来自动寻找对应的路径

这样,修改域名的话就只需修改urls.py中的path即可

login.html

 urls.py

 效果如下:

当你没有输入username的值的时候

 

 会自动跳转到:

 

 

二.调用URL的name

主要有两种方法:

  1.view中 redirect(reverse('login'))

  2.html中 模板语言:{% url 'login' %}

第一种在view中调用的方法在上面已经讲过,这里主要讲第二种方法:在html中调用URL的name 

1.项目结构如下:

2.在html中调用URL的name 

 login.html

index.html   注意:使用模板语言调用URL的name属性的跳转

 

 views.py

urls.py

 运行:

 点击登录后,页面跳转

 

三.调用URL的name时的参数传递(上)

参数传递的两种方式:

方式一:使用tuple传参数
方式二:使用dict传参数

 

运行效果:

 

 

 

 

四.调用URL的name时的参数传递(下)

1.

2.

而在html中的a标签中的传值如下:

 

五.URL命名空间

前期准备:

1.创建两个app,app01和app02

2.分别在这两个文件夹中创建urls.py

3.

 

 app02中到的views.py类似

问题是:当app01中的urls.py使用的name属性值和app02中的urls.py使用的name属性值一样的时候,系统只会认两个app其中一个的urls.py

解决方法:

为URL指定命名空间,如图所示(以修改app01为例)

 

 



posted @ 2021-03-22 15:10  Chris_Ma  阅读(54)  评论(0)    收藏  举报