3.视图与路由

在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  视图函数

2  path转换器

3  re_path() 正则路由


 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是正则表达式

我们现在只让网页取第一位数字,其余输入什么也无所谓

首先我们加入一个路由

  • 这里要注意,尖号(代表开头)和美元号(代表结尾)能写上尽量写上,不然很容易出现其他的状况

之后我们加上对应的视图

然后我们访问一下

发现没有什么问题

当然也可以有多组正则

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Suyuoa

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值