Django框架理解--V

本文介绍了Django框架中View的概念和作用,将其与MVC框架对比,并详细讲解了View如何处理HTTP请求,如何通过URL映射进行页面响应和重定向,以及在urls.py中的配置方法,帮助理解Django的URL处理机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这次我讲一下我Django中V的理解,欢迎大家斧正

不知道大家知道MVC框架不,其实MTVMVC是同源的框架,层次划分都很类似,只是说法不同。

Django中:M--model(与数据库相关的),T--template(模板,与页面有关),V--view(与后台程序有关,相当于从控制器)

.NET中:M--model(同上),V--view(视图,与页面有关),C--Controller(控制器,后台程序)

 

首先,大家想一下,我们的网站应该有URL吧,虽然是本地的服务器上运行,但也是URL啊,那我们怎么通过一个不同的URL来访问不同的界面呢?

没错,这就是view需要干的第一件事,我们的网站的本地服务器是一直运行的,前端有请求,我们就应该对它进行响应。通过浏览器的地址栏输入URL进行访问我们的网站也是一种请求,我们也要对它进行响应。

这是在views中的代码:第一个引入是固定的,关于网页渲染的;第二个是Http请求的响应对象,第三个是http请求的重定向对象;第四个是通过域名来映射URL的

看着个函数,request是固定的请求对象,必须加上,然后我们看到函数的返回render渲染的网页,网页的相对路径是blog/home.html,为什么路径是这个呢,首先templates是我们自己加上的文件夹,Django会自动去每个app的templates中去寻找home.html,所以不需要templates/blog/home.html,另外我在templates中还创建了一个文件夹blog,与这个app同名,这样做其实有很大的用处,你想,如果多个app都定义了home.html这个界面,然后django又是挨个templates文件中去找,就有可能找错,如果我们加上这个与app同名的文件夹就避免了这个问题

 

接下来我们来看项目的urls.py是怎么写的:

首先我们得把views.py导入进来把,然后就是url的映射关系了,第一个参数是url的pattern,根据正则表达式来进行匹配,第二个参数是对应的后台函数,最后还有一个魔法参数name,reverse就需要用到这个啦,当然还有别的用途,你可以认为是域名,因为它是与某一个URL一一对应的。

我们试想一个场景,就是用户把你的网址保存到收藏夹了,两年后,你的网站进行了更新,那个URL也就失效了,但是你不想流失这样一个客户吧,说不定他发达了要来打赏你呢?所以我们在网站更新的时候要考虑到以前的网址,然后通过重定向来跳转到现在的页面,另外,如果我们修改了URL,那岂不是每个地方的URL都要改了,这就给维护带来很大的困扰。我们通过name来进行重定向的话。流程是这样的:

用户用失效的URL来访问你的网站,这个urlpatterns接收并且匹配这个url,然后跳转到进行重定向的函数里面进行处理,具体是这样的:

分析下这个重定向的逻辑啊:首先用户输入了失效的URL,然后我们匹配到这个URL时进入到old_calculate_redirect这个函数,然后我们会找到名字为home的path进行重新定位URL,然后通过重定向的URL进入下面这个函数:

然后我们页面返回的就是blog/home.html这个网页了,好了,views就先讲这么多,后面学习的体会和理解也会慢慢分享出来哒。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值