一、分发地址
在APP中创建urls.py文件,将属于该APP的url地址都写入到这个文件中,当程序收到用户发送的请求时,先在根目录的urls.py文件中查找该地址属于哪个APP,将这个请求分发到该APP中,然后在APP的url.py中找到具体信息。
from django.urls import path,include #include就是分发函数 urlpatterns = [ path('1/',include(‘index.urls’)) #index是APP名字 ]
二、带变量的URL
一个url地址可以代表多个不同页面,需要用到变量,URL的变量类型有四种,分别是字符串类型、整型、slug和uuid。其中默认是字符串类型。
path('<year>/<int:month>/<slug:day>',``````)
在URL中使用<>可以设置变量,在括号中以冒号分为两个部分,冒号前为变量类型,不加则为字符串类型,冒号后为变量名。
三、在URL中使用正则表达式
在url中可以使用正则表达式来限制可变范围,有两种引入方式:
#方法一 from django.urls import path,re_path urlpatterns = [ re_path('(?P<year>(\d+))',``````), ] #方法二 from django.urls import path from django.conf.urls import url urlpatterns = [ url(r'......',``````), #必须在url前加r ]
注意:如果在URL中使用了正则,则URL末端必须加上斜杠或者其他字符,否则正则表达式就不会生效,输入无限长的字符串都可以正常访问。
四、URL中设置参数
1、参数name
除了在URL中设置变量外,还可以为URL起别名,可以在html模板中使用:
path('hello/',views.index, name='myname')
<body> <a href="{% url 'myname' %}">click this<a> </body>
给URL起别名看似没有必要,但是如果改变了URL的路径,则需要修改所有html中用到该URL的地方,这个时候使用别名就可以省去这些麻烦。
在templates和views中,都可以通过别名来生成url地址:
2、其他参数
除了name参数外,还可以设置一种字典类型的参数,这种参数相当于为html模板定义变量并赋值,也只能在模板中使用。
path('hello',views.index,name='myname',{'change':'yes'})
<a href="{% url 'name' %}">{{ chang }}</a> #这里的{{change}}就会在页面上显示为yes
五、Django的路径添加问题
在settings中添加 APPEND_SPASH = False 可以阻止django自动添加url最后的斜杠。