美文网首页
96.Django数据模版和控制器

96.Django数据模版和控制器

作者: 羽天驿 | 来源:发表于2020-01-01 22:59 被阅读0次

一.项目架构的模式

写程序的终极目标:高内聚 低耦合(high cohesion low coupling)

项目架构模式:MVC架构模式。

Model View Controller

---模型 -----视图 ---控制器

数据------数据显示

在DjangoMTV架构:
Model -- Template(模板--就是页面)----view
模型-----模板------------视图(扮演了一部分控制器的角色)


Model还是模型,Template是模板,就相当于视图。view其实不是视图扮演的是控制器的角色。
Django本身扮演了一部分控制器的角色。


核心理念:把模型和视图进行拆分。数据和数据的显示要分离。

统一组数据可先渲染成不同的形式(数据和显示解耦合)也就是模型和视图要解耦合。

统一模型可以渲染成不同的视图,同一个视图可以加在不同的模型。

控制器:负责把数据和视图连接在一起。(Django中的MTV架构)

二。创建自己的应用。


1.一个django下面可以创建一个或多应用,相当于模块。
2.创建应用-----python mange.py startapp 应用的名字(英文)
3.打开建的这个包下面有许多文件。
4.这个包下面有多个文件:init,admin.py,apps.py,models.py,tests.py,view.py等
**所有的框架都是由 模板 模型 视图组成的。


models ---模型
views------视图(控制器)
在建一个文件夹u来放模板也就是页面:
(1)在项目上点击右键建设一个文件夹templates 这个文件夹就是模板,把页面就放在这个里面。
(2)文件夹建好后:需要在项目中配置建的这个文件夹的路径,否则是找不到这个文件夹的。
如何配置:
(1)找到配置文件settings.py这个文件
(2)再找到TEMPLATES这一项
(3)在该字典的"DIRS"后面的[]写上模板文件夹的绝对路径即可。也可以用os模块写 os.path.join(BASE_DIR,"templates")


静态资源:图片等在项目中创建文件夹然后到
setting里的----------
设置:
STATIC_URL="/STATIC/"

注意你这个地方是什么名字以后写路径的时候开头就是什么名字和你的文件夹叫什么名字是没有任何关系的。


5.综上 M,T,V架构就完成了。

三.view.py视图控制器

1.Django本身扮演了部分控制器的角色,剩下的控制器的功能要依靠view.py来完成。
2.控制器做什么?
(1)接受用户的起请求,验证用户的请求。
(2)操作模型
(3)给用户产生响应(渲染页面)
3.在view中写函数----视图函数。
注意:写的这个函数必须带一个HttpRequest参数---这个参数表示的是用户的请求,所以这个函数必须有一个返回值:
返回----return HttpResponse()这就是给用户一个响应。

这就创建好了一个视图函数,但是我们的配置当请求哪个资源的时候就会调用这个视图函数。
这个时候我们就要配置url:
(1)在项目里----urls.py的这个模块中。
(2)找到urlpatterns这个列表
(3)添加path("资源路径 ",视图函数名字)----作用把资源路径和视图函数映射起来,这个的作用就是当你请求这个资源路径的时候,我就会调用这个视图函数,并将这个视图函数渲染到页面上给用户一个响应。

四.TEMPLATES模板

1.模板中写要展示给用户看的东西
2.导入from django.shortcuts import render
3.在view中写视图函数用render来渲染模板中写好的页面。

def index(request: HttpRequest):
            pass
return render(request, "index.html",context)

4.render(请求对象,渲染哪个页面,字典)

四.通过Django的模板页来生成动态的内容。

(1)使用Django的模板语法和模板指令来生成动态的内容。
{% for i in x %}
{% endfor %}
这个就是模板语法和模板指令


index:

{% for fruit in fruits %}
    <li>{{ fruit}}</li>
    {% endfor %}

view.py

def index(request: HttpRequest):
    fruits=["苹果","香蕉","草莓","西瓜","火龙果","橘子","山楂","榴莲"]
    context={
        "fruits":sample(fruits,3),
        "greeting":"你好,相信自己改变世界"
    }
    return render(request, "index.html",context)

相关文章

  • 96.Django数据模版和控制器

    一.项目架构的模式 写程序的终极目标:高内聚 低耦合(high cohesion low coupling) 项目...

  • php控制器与模型命令行创建

    创建控制器 用命令行创建控制器有一个模版,可以在模版里面修改我们想要的默认模版vendor -> topthink...

  • angular4 (3)数据绑定

    数据绑定可以将组件、控制器的属性和方法,和组件的模版连接起来,大大降低了开发时的编码量。例如: <1>事件绑定 例...

  • 无缘无故Spring MVC报错空指针异常

    楼主把,模版文件放在了 WEB-INF 目录下 ,所以要配置控制器才能访问模版文件 访问模版文件的路径是 ...

  • (八)React 的虚拟DOM

    一代 state数据 JSX模版3.数据+模版结合,生成真实的DOM,来显示 state发生改变5.数据+模版结合...

  • 学习微信小程序(3)——组件

    一、自定义组件 1、组件模版和样式 组件模版组件模版的写法与页面模板相同。组件模版与组件数据结合后生成的节点树,将...

  • 模版引擎

    Spring boot 整合 freemarker 模版引擎 引入jar包 编写控制器 插件freemarker配...

  • 三十二:Django之模版使用

    一:创建模版文件夹 二:配置模版目录 三:使用模版文件 四:给模版文件传递数据 模版变量使用:{{ 模版变量名 }...

  • [Rails] Services

    为什么避免控制器肥胖? (1) 控制器存在的意义是获取数据和显示数据,避免混入与模型相关的操作。(2) 控制器中通...

  • laravel向前模板传入数据

    1.compact() 后台得到$data 这里 控制器 和模版中的变量名需要一致 2.with() 前台得到的...

网友评论

      本文标题:96.Django数据模版和控制器

      本文链接:https://www.haomeiwen.com/subject/gvigoctx.html