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为例)