在Django中,我们一遍将视图代码放在项目同名文件夹下的views.py中,views.py需要我们自行创建,路由我们放在项目同名文件夹下的urls.py中,urls.py在创建项目时就已经自动创建完毕
url(Uniform Resource Locator)(统一资源定位符)俗称地址,结构是下面这个样子的,中括号中的内容有时会省略
- protocol 协议,https(密文)比http(明文)更安全,file:///是本地计算机上的文件
- hostname 域名或IP
- port 端口,浏览器默认访问http协议访问端口80,在地址栏中会省略端口
- path 路由
- query 查询字符串,问号是查询字符串的标识,如果在问号后发现&,说明有多组查询信息
- fragment 锚点,井号是锚点的标识,锚点可以让页面自动显示指定的位置
现在我们看一下urls.py,上面的注释内容我们有时间的话可以看一下,我们主要看我框出来的部分,urlpatterns是一个列表,列表中有我们所有的路由
默认有一个admin,也就是说,我们现在访问服务的admin应该是有响应的
我们再回到代码,如果路由是前面的字符串,那么就会进入到后面的视图函数(admin.site.urls)
目录
1 视图函数
视图函数的格式是这样的
下面我们做一个例子,首先我们在项目同名文件夹下(路径可以自定,我们一般都放在这)创建views.py(名称可以自定,我们一般就用这个名称)
之后我们在views中写入下列内容
之后我们回到urls,写入下列内容
- 这里最后的斜杠是看需求定的,有时需要写,有时不能写
- 像hello_world这种路由就可以不加斜杠,因为在路由名称中包含字符,如果像hello这种就需要在最后给一个斜杠,不能直接给一个字符串hello,如果这里有问题可以看一下后面的 23.云笔记项目 命名路由的方式
此时我们访问测试页看一下
发现404了,这是因为我们加入路由后,测试页就不再使用了,我们此时访问 http://127.0.0.1:8000/hello_world/
发现我们刚刚写的html字符已经出现在页面上了
- path()这个方法还有第三个常用参数name,这个会在后面讲模板时提到
回到我们的项目中,我现在还是想让127.0.0.1:8000 这个地址显示内容,那么我们首先在views.py中这样写
然后在urls.py中,这样写
在路由那里给一个空的字符串,main_page这个名称自定,跟上面能对上就行,修改后我们再访问一下
2 path转换器
当我们需要有规律的路由显示有规律的视图的时候,这个时候我们可以使用path转换器,我们应该在urls.py中这样写
然后在views中这样写
写完之后我们根据路由访问一下服务
发现这样就可以根据不同的路由显示不同的内容
除了整形,还可以转换str,slug与path
str与int是比较常用的两个转换器,下面我再做一个str的例子
在urls.py中的urlpatterns,django匹配的顺序是由上而下的,如果上面的路由已经匹配到了则不会继续向下检索
3 re_path() 正则路由
re_path的用法是这样的,pattern是规则,正则表达式可以看一下这个 正则表达式_potato123232的博客-CSDN博客
外面的小括号以及里面的?P是固定格式,name是传入的参数名字,pattern是正则表达式
我们现在只让网页取第一位数字,其余输入什么也无所谓
首先我们加入一个路由
- 这里要注意,尖号(代表开头)和美元号(代表结尾)能写上尽量写上,不然很容易出现其他的状况
之后我们加上对应的视图
然后我们访问一下
发现没有什么问题
当然也可以有多组正则