模板、中间件以及MVC与MTV

模板

基本数据类型的渲染

{#基础数据类型的渲染#}
{#1. 变量#}
{{ name }}
{#2. 列表#}
    {#通过点索引可以取值#}
    {{ list.0 }}
    {#for循环取值#}
    {% for l in list %}
        {{ l }}
    {% endfor %}
{#3. 字典#}
    {#通过点key取值#}
    {{ dict.name }}
{#for 循环取值,可以.items  .values  .keys#}
    {% for foo in dict.items %}
        {{ foo }}
    {% endfor %}
{#4. 列表套字典#}
    {% for d in lists %}
        {{ d.name }}
    {% endfor %}

母版与子板

母版写好的页面,子板可以直接通过继承获得并使用

一般会在母版中占三个位置,留给子板的内容来添加

{% block mycss %}
{#子板的css会添加到这#}
{% endblock %}

{% block mycontent %}
{#子板的html代码会添加到这#}
{% endblock %}

{% block myjs %}
{#子板的js代码会添加到这#}
{% endblock %}

而我们的子板想要使用母版的内容,必须要继承,并且写与母版一直的占位符

{% extends "layout.html" %}
{#这样就会继承layout.html文件#}

include导入

在项目开发中,如果我们写了一个样式或者js代码会被很多的页面引用,我们一般的做法

是把这写代码单独放到一个文件中,css代码通过link引入使用,js通过script的src引入使用

那当我们写了一个html的小组件用的非常多,我们也可以把他写到一个单独的文件中

在需要用的地方导入一下

{% include "small.html" %}

这样那个文件中的代码就会被全部导入过来,并且我们多次导入,他就会出现多次

内置函数与自定义函数

内置函数:模板语言提供给我们的函数

{#函数写在管道符后面#}
{{ name | upper }}

自定义函数:需要我们在app中手动创建templatetags模块,然后里面文件名可以随意

自定义函数的两种方式

from django import template
register = template.Library()
# 第一种方式
@register.filter()
def func():
    pass

# 第二种方式
@register.simple_tag()
def fnn():
    pass

自定义函数的使用方式

{#首先都需要把文件模块加载进来#}
{% load aaa %}
{#第一种定义方式的使用#}
{{ name | func }}
{#如果需要传参    函数名:参数   冒号前后不能由空格#}
{{ name | func:"xxx" }}
{#第二种方式的使用 通过{%  %}使用#}
{% fnn name "xxx" "qqq" %}

注:第一种方式filter 冒号前后不能有空格,并且传参只能传一个 ,第二种simple_tags可以传多个参数,通过空格隔开

中间件

django的请求生命周期

中间件基本组成与执行顺序

中间件说白了就是一个一个的类,他们都具备的两个方法是如下两个:

from django.utils.deprecation import MiddlewareMixin
class MyMiddleWare(MiddlewareMixin):

    def process_request(self,request):
        pass

    def process_response(self,response):
        pass
#     上面两个方法就是中间件类中必备的两个方法
    def process_views(self, request, callback, callback_args, callback_kwargs):     pass # 这个方法也是很常见的,但不是必须的

中间件必须添加到settings.py中MIDDLEWARE列表中才生效

MIDDLEWARE = [
    ‘django.middleware.security.SecurityMiddleware‘,
    ‘django.contrib.sessions.middleware.SessionMiddleware‘,
    ‘django.middleware.common.CommonMiddleware‘,
    ‘django.middleware.csrf.CsrfViewMiddleware‘,
    ‘django.contrib.auth.middleware.AuthenticationMiddleware‘,
    ‘django.contrib.messages.middleware.MessageMiddleware‘,
    ‘django.middleware.clickjacking.XFrameOptionsMiddleware‘,
]

执行的顺序:

当中间件中都没有process_views函数时

  当有request请求时,先从上到下执行中间件中的process_request函数,执行完接着执行

  视图函数,视图函数执行完就从下到上执行中间件中的process_response函数

  当process_request函数返回None时,中间件往下执行,当返回HttpResponse时,

  这个中间件往下的中间件都不会执行,直接从这个中间件的process_response函数往回执行

当中间件中有process_view函数时

中间件的作用以及自定义中间件

中间件的主要作用时对request请求以及response响应做一些预处理,以及判断IP是否为白名单之类的应用

自定义中间件

1. 生成一个文件,在文件中生成类

from django.utils.deprecation import MiddlewareMixin
class M1(MiddlewareMixin):

    def process_request(self,request):
        print("this is m1 request")

    def process_response(self,request,response):
        print("this is m1 response")
        return response

2. 放入到settings文件中的MIDDLEWARE列表中

import m1
MIDDLEWARE = [
    ‘django.middleware.security.SecurityMiddleware‘,
    ‘django.contrib.sessions.middleware.SessionMiddleware‘,
    ‘django.middleware.common.CommonMiddleware‘,
    ‘django.middleware.csrf.CsrfViewMiddleware‘,
    ‘django.contrib.auth.middleware.AuthenticationMiddleware‘,
    ‘django.contrib.messages.middleware.MessageMiddleware‘,
    ‘django.middleware.clickjacking.XFrameOptionsMiddleware‘,
    ‘m1.M1‘,
]

MVC与MTV

MVC与MTV本质都是一样的,都是项目目录结构的设计模式

MVC

m:models 存放表模型

v:views 存放html页面

c:controller 存放逻辑处理函数

MTV

m:models 存放表模型

t:templates 存放html页面

v:views 存放视图函数

原文地址:https://www.cnblogs.com/hesujian/p/11221933.html

时间: 2024-08-30 17:18:30

模板、中间件以及MVC与MTV的相关文章

web框架以及MVC、MTV

h3 { background-color: palegreen } 本篇内容概要 ----原始web框架 ----自定义web框架 ----mvc和mtv 一.web框架的本质 对于所有的web应用,本质上其实就是一个socket服务端,用户的浏览器就是一个socket客户端 简单的说就是,socket传入数据,之后后面是业务逻辑处理程序 画得不好,理解就好 二.引入WSGI 由于web框架包括两部分 1.socket 2.逻辑处理 有些框架只有逻辑处理,没有socket,如flask.bot

浅谈 MVC 和 MTV

浅谈 MVC 和 MTV 一.MVC M:model,模型,就是数据模型,负责数据的存取: V:view,视图,负责页面的展示逻辑: C:controller,控制器,负责业务逻辑的处理: 二.MTV M:model,模型,就是数据模型,负责数据的存取: T:template,模板,负责页面的展示逻辑: V:view function,视图函数,负责业务逻辑的处理: 注:核心目的就是为了解耦,提高开发效率 欢迎关注小婷儿的博客: csdn:https://blog.csdn.net/u01098

04 MVC与MTV模型

MVC与MTV模型 MVC Web服务器开发领域里著名的MVC模式,所谓MVC就是把Web应用分为模型(M),控制器(C)和视图(V)三层,他们之间以一种插件式的.松耦合的方式连接在一起,模型负责业务对象与数据库的映射(ORM),视图负责与用户的交互(页面),控制器接受用户的输入调用模型和视图完成用户的请求,其示意图如下所示: MTV Django的MTV模式本质上和MVC是一样的,也是为了各组件间保持松耦合关系,只是定义上有些许不同,Django的MTV分别是值: M 代表模型(Model):

Django MVC与MTV概念 Ajax、分页实现

 MVC与MTV概念 MTV与MVC(了解)        MTV模型(django):            M:模型层(models.py)            T:templates            V:视图层views        MVC模型:            M:模型层(models.py)            V:视图层(views.py)            C:控制器(Controller) urls.py        本质:django的MTV也是MVC

区别MVC和mtv

M:model 模型,和数据库进行交互 V:视图,产生html页面 C:controller 控制器,接收请求,进行处理,和m,V进行交互 M:model模型,和MVC的m相同,和数据库进行交互 V:view视图,和mvc的c功能相同,接收请求,进行处理,与m和t进行交互,返回应答 T:template模板,和mvc的v功能相同,产生html页面 原文地址:https://www.cnblogs.com/zhuyuanying123--/p/11511866.html

四 .Flask 模板 中间件 特殊装饰器 基础知识(使用)

一 Flask 模板 中间件 特殊装饰器 1 .Flask 模板语法直接看面效果 https://www.cnblogs.com/lovershowtime/p/11349576.html    模板  和Django模板类似 edit.html<form> asdfasdf asdfasdf asdf asdf 哈啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊 </form> login.html <!DOCTYPE html> <html lang="zh-C

python MVC、MTV 框架介绍 Django 模板系统常用语法

Django 框架简介一.MVC框架和MTV框架1.MVC 全名Model View Controller,是软件工程中的一种软件架构模式,把软件系统分为三个基本部分.优势: 耦合性低 重用性高 生命周期成本低结构:模型(Model) 与数据库相关 存取数据视图(View) 处理业务逻辑 展示信息控制器(Controller) 获取用户信息 给模型传递指令2.Django的MTV 全名Model Template View 借鉴了MVC框架的思想,也是分成三部分,来降低各个部分之间的耦合性.结构

Django之MVC和MTV

一. MVC MVC 是一种使用 MVC(Model View Controller 模型-视图-控制器)设计创建 Web 应用程序的模式: Model(模型)表示应用程序核心(比如数据库记录列表). View(视图)显示数据(数据库记录). Controller(控制器)处理输入(写入数据库记录). 二. MTV Django的MTV模式本质上和MVC是一样的,也是为了各组件间保持松耦合关系,只是定义上有些许不同,Django的MTV分别是值: M 代表模型(Model):负责业务对象和数据库

简述MVC和MTV模型

一.MVC模型 用一句话来描述他们之间的关系:Controller负责将Model的数据用View显示出来,换句话说就是在Controller里面把Model的数据赋值给View. 那么具体是实现的,我们先上图 斯坦福大学公开课上的这幅图来说明,这可以说是最经典和最规范的MVC标准. V:View(视图)是应用程序中处理数据显示的部分: C:Controller(控制器)是应用程序中处理用户交互的部分: M:Model(模型)是应用程序中用于处理应用程序数据逻辑的部分: 流程详解: View是来