侧边栏壁纸
博主头像
进一步,海阔天空 博主等级

进一步,海阔天空

  • 累计撰写 150 篇文章
  • 累计创建 20 个标签
  • 累计收到 7 条评论

目 录CONTENT

文章目录

Django Web开发系列教程【3】- MVT模型

海阔天空
2023-05-08 / 0 评论 / 0 点赞 / 97 阅读 / 0 字

MVT简介

MVT即英文(Models-Views-Templates)的简写,MVT框架是Django遵从的视图显示框架,其原理跟Java和c#中广泛使用的MVC(Models-Views-Controller )框架类似。

框架可以把数据库和后台系统、前端显示界面通过网络连接起来。MVT框架示意图(摘自《Building websites with Django》):

其原理跟MVC非常接近,这里就不详细讲解了。

什么是Models(M)

简单的理解,我们可以认为Model就是用来描述我们要保存的数据。数据可以是数据库中的数据(但也不仅限于,如放在elsticsearch中的也可以),也可以在文件中的等等。由于大部分情况下我们都是在操作数据库,所以我们一般使用ORM(Object Relational Mapping对象关系映射)来建立数据库表和python对象之间的关系,从而避免直接编写SQL语句来操作数据库,当然你也可以直接通过SQL来读写数据库。在Java里面,一般我们还需要hibernate或JPA等ORM框架进行对象关系映射,而Django里面已经内建了ORM框架,我们直接使用即可,非常方便。

什么是Views(V)

View定义在views.py文件中,该文件如果没有,可以自行创建。View是相应url请求的和函数映射。个人理解,Django里面的View应该对应MVC中的C,而Django里面的T对应的是MVC中的V。

什么是Templates(T)

Template即界面模版,事实上是把动态内容和静态模版整合起来,一起生成最终的HTML页面,所以正如我前面说的,Django中的T跟Java web中的jsp页面类似,应该是MVC中的V才对。这点要特别注意。下图是一个Template的示例,学过JSP开发的人是不是一看就懂了啊?

简单示例

下面我们直接在创建的项目上添加一个views.py文件,内容如下:

from django.shortcuts import render

def index(request):
    return render(request,'index.html',{"message":"hello django"})

在项目的根目录下添加新目录templates,并新建一个html文件index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
{{ message }}
</body>
</html>

然后修改urls.py文件,添加一个path函数,指定URL指向我们的views.index函数。

from django.contrib import admin
from django.urls import path
from . import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('',views.index),
]

path() 函数说明

Django path() 可以接收四个参数,分别是两个必选参数:route、view 和两个可选参数:kwargs、name。

语法格式:

path(route, view, kwargs=None, name=None)
  • route: 字符串,表示 URL 规则,与之匹配的 URL 会执行对应的第二个参数 view。

  • view: 用于执行与正则表达式匹配的 URL 请求。

  • kwargs: 视图使用的字典类型的参数。

  • name: 用来反向获取 URL。

也可以通过re_path()函数,用正则表达式的规则来实现 。

from django.urls import include, re_path

urlpatterns = [
    re_path(r'^index/$', views.index, name='主页'),
    re_path(r'^user/(?P<username>\w+)/$', views.user, name='kevin'),
    re_path(r'^weblog/', include('blog.urls')),
    ...
]

修改完成后的项目目录结构如下

启动服务,打开浏览器访问就可以看到主页的内容了

0

评论区