模板、中间件以及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 存放视图函数
模板、中间件以及MVC与MTV的更多相关文章
- web 框架的本质及自定义web框架 模板渲染jinja2 mvc 和 mtv框架 Django框架的下载安装 基于Django实现的一个简单示例
Django基础一之web框架的本质 本节目录 一 web框架的本质及自定义web框架 二 模板渲染JinJa2 三 MVC和MTV框架 四 Django的下载安装 五 基于Django实现的一个简单 ...
- django模块导入/函数/中间件/MVC和MTV/CSRF
目录 一:模块导入 二:函数 三:中间件 四:MVC和MTV 五:csrf 一:模块导入 第一种:继承 这里的母版更像是一个架子,子板都是定义的内容(如果多个页面中 ,存在相同的页面:这样我们可以抽到 ...
- Python自动化运维之26、Web框架本质、MVC与MTV
一.Web框架本质 众所周知,对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端. #!/usr/bin/env python #coding:ut ...
- 浅谈 MVC 和 MTV
浅谈 MVC 和 MTV 一.MVC M:model,模型,就是数据模型,负责数据的存取: V:view,视图,负责页面的展示逻辑: C:controller,控制器,负责业务逻辑的处理: 二.MTV ...
- Django---定义、MVC和MTV模式、命令行工具、配置文件settings
1.什么是web框架 框架,即framework,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构,使用框架可以帮你快速开发特定的系统,简单地说,就是你用别人搭建好的舞台来做表演. 对于所有的 ...
- day56——http协议、MVC和MTV框架模式、django下载安装、url路由分发
day56 昨日复习 今日内容 HTTP协议 网页:https://www.cnblogs.com/clschao/articles/9230431.html 老师整理的重点 老师整理的重点 请求信息 ...
- MVC与MTV模型
MVC与MTV模型 MVC Web服务器开发领域里著名的MVC模式,所谓MVC就是把Web应用分为模型(M),控制器(C)和视图(V)三层,他们之间以一种插件式的.松耦合的方式连接在一起,模型负责业务 ...
- 自定义mvc或mtv框架:基于wsgiref的web框架
把mvc或mtv框架的model数据库,view:html,control逻辑处理,url判别,wsgiref集中在一个文件 代码如下 #!/usr/bin/env python #-*- codin ...
- MVC和MTV结构分析
@font-face { font-family: "Times New Roman"; }@font-face { font-family: "宋体"; }@ ...
随机推荐
- 使用poi解决导出excel内下拉框枚举项较多的问题
废话少说,直接上代码: package com.fst.attachment.controller; import java.io.FileOutputStream; import org.apach ...
- opencv3.4.6 cmake
Selecting Windows SDK version to target Windows 10.0.16299. Found PythonInterp: N:/Anaconda3/install ...
- DataWorks2.0——DataStudio简单对比使用上手
1.原先的数据管理去哪里了? 悬停在此图标上即可: 2.项目模式有何不同?
- Go并发编程实战 第2版 PDF (中文版带书签)
Go并发编程实战 第2版 目录 第1章 初识Go语言 1 1.1 语言特性 1 1.2 安装和设置 2 1.3 工程结构 3 1.3.1 工作区 3 1.3.2 GOPATH 4 1.3.3 源码文件 ...
- 《Learning a Discriminative Feature Network for Semantic Segmentation》解读
旷世18年的CVPR,论文链接:https://arxiv.org/abs/1804.09337 Motivation:针对分割中的“类内不一致”和“类间一致性”的两大问题,设计了结合Smooth n ...
- Android Butterknife使用方法总结 IOC框架
前言: ButterKnife是一个专注于Android系统的View注入框架,以前总是要写很多findViewById来找到View对象,有了ButterKnife可以很轻松的省去这些步骤.是大神J ...
- 原生JavaScript常用本地浏览器存储方法四(HTML5 LocalStorage sessionStorage)
HTML5 LocalStorage浏览器的支持的情况如上图,IE在8.0的时候就支持了.不过需要注意的是,IE测试的时候需要服务器环境(或者localhost). 测试自然是检测浏览器是否支持本地存 ...
- 原生JavaScript常用本地浏览器存储方法一(方法类型)
有时需要将网页中的一些数据保存在浏览器端.好处就是当下次访问页面时,直接就可以从本地读取数据,不需要再次向服务器请求数据.目前常用的有以下几种方法: 1.cookie cookie会随着每次HTTP请 ...
- AWS 基础设施即代码(五)
基础设施即代码 概述 手动配置的挑战:可能因为人为错误导致缺乏可靠性,环境无法完全再现,同时需要额外文档 基础设施即代码,是软件开发中用于创建可重用.可维护.可扩展及可测试基础设施的技术.实践和工具, ...
- 【计算机视觉】车牌识别开源框架EasyPR介绍
之前学习了一个GitHub开源的框架,GitHub地址为: https://github.com/liuruoze/EasyPR 希望通过此篇博客详细阐述如何一步步实现车牌的识别过程. 车牌识别分 ...