网页的MVC模式简介
#! /usr/bin/env python3
# -*- coding:utf-8 -*-
#MVC:Model-View-Controller 模型-视图-控制器
#Python处理URL的函数就是C(controller),controller负责业务逻辑,比如检查用户名是否存在,取出用户信息等
#包含变量的HTML代码就是模板V(view),view负责显示逻辑,展现页面,通过简单地替换一些变量,view最终输出的就是用户看到的HTML。
#Model 是用来存储传递给VIEW的变量的。通常Model就是一个dict。
#将flask_1.py中的例子改成MVC模式:
from flask import Flask,request,render_template
app=Flask(__name__)
@app.route('/',methods=['GET','POST'])
def home():
return render_template('home.html')
@app.route('/signin',methods=['GET'])
def signin_form():
return render_template('form.html')
@app.route('/signin',methods=['POST'])
def signin():
username=request.form['username']
password=request.form['password']
if username=='admin' and password=='password':
return render_template('signin-ok.html',username=username)
return render_template('form.html',message='Bad username or password',username=username)
if __name__=='__main__':
app.run()
#Flask 通过render_template()函数来实现模块的渲染。和web框架类似,Python的模板也有很多种,Flask默认支持的模板是jinja2.
#home.html 用来显示首页的模板:
'''
<html>
<head>
<title>Home</title>
</head>
<body>
<h1 style="font-style:italic">Home</h1>
</body>
</html>
'''
#form.html 用来显示登录表单的模板:
'''
<html>
<head>
<title>Please Sign In</title>
</head>
<body>
{% if message %}
<p style="color:red">{{message}}</p>
{% endif %}
<form action="/signin" method="post">
<legend>Please sign in:</legend>
<p><input name="username"placeholder="Username"value="{{username}}"></p>
<p><input name="password"placeholder="Password" type="password"</p>
<p><button type="submit">Sign In</button></p>
</form>
</body>
</html>
'''
#signin-ok.html 登录成功的模板
'''
<html>
<head>
<title>Welcome,{{username}}</title>
</head>
<body>
<p>Welcome,{{username}}!</p>
</body>
</html>
'''
#登录失败的模板呢?我们在form.html中加了一点判断,把form.html重用为登录失败的模板。
#最后,一定要把模板放到正确的templates目录下,templates和webMVC.py在同级目录下.
#通过MVC,我们在Python代码中处理M(model)和C(controller),而v(view)是通过模板处理的,这样,我们就成功地把Python代码和HTML代码最大限度地分离了。
#使用模板的另一大好处是,模板改起来很方便,而且,改完保存后,刷新浏览器就能看到最新的效果,这对于调试HTML、CSS和JavaScript的前端工程师来说实在太重要。
#在jinja2模板中,我们用{{name}}表示一个需要替换的变量。很多时候,还需要循环、条件判断等指令语句,在jinja2中,用{%...%}表示指令。
#比如循环输出页码:
'''
{% for i in page_list %}
<a href="/page/{{i}}</a>
{% endfor %}
'''
#如果page_list是一个list:[1,2,3,4,5],上面的模板将输出5个超链接。
#除了jinja2,常见的模板还有:
'''
Mako:用<%...%>和${xxx}的一个模板
Cheetah:也是用<%...%>和${xxx}的一个模板
Django:Django是一站式框架,内置一个用{%...%}和{{xxx}}的模板
'''
网页的MVC模式简介的更多相关文章
- Java的MVC模式简介
Java的MVC模式简介 MVC(Model View Control)模型-视图-控制器 首先我们需要知道MVC模式并不是javaweb项目中独有的,MVC是一种软件工程中的一种软件架构模式,把软件 ...
- MVC模式简介
MVC模式是一种表现模式,它将web应用程序分成三个主要部分即:模型(Model)视图(View)控制器(Controller)M:Model主要是存储或者是处理数据的模型,包含了用户使用的数据,业务 ...
- mvvm模式和mvc模式 概述总结对比
1.mvc模式简介: MVC的全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,是一种软件设计典范.例如: angular ...
- MVC 模式
1.MVC 模式简介 MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式.这种模式用于应用程序的分层开发.Model(模型):模型代表一个存取数据的对象或 JAV ...
- 【iOS 开发】iOS 开发 简介 (IOS项目文件 | MVC 模式 | 事件响应机制 | Storyboard 控制界面 | 代码控制界面 | Retina 屏幕图片适配)
一. iOS 项目简介 1. iOS 文件简介 创建一个 HelloWorld 项目, 在这个 IOS 项目中有四个目录 : 如下图; -- HelloWorldTests 目录 : 单元测试相关的类 ...
- Django简介以及MVC模式
一.简介 Django,是当前Python世界里最负盛名且成熟的网络框架.最初用来制作在线新闻的Web站点. Django是一个基于python的web重量级框架 重指的是为发开者考虑的多 采用了MV ...
- MVC模式与三层架构和表示层
1.MVC模式 - Model-View-Controller - 模型-视图-控制器 - Model(模型) > 模型分为业务模型,和数据模型 ...
- Dot Net设计模式—MVC模式
1 MVC设计模式简介 MVC结构是为那些需要为同样的数据提供多个视图的应用程序而设计的,它很好的实现了数据层与表示层的分离.MVC作为一种开发模型,通常用于分布式应用系统的设计和分析中,以及用于确定 ...
- Android 腾讯入门教程( 智能手表UI设计 和 MVC模式 )
*****注意到mvc 在android 中是如何进行分层分域执行各自的功能.**** 官方推荐的按钮尺寸是48像素 前端之Android入门(1):环境配置 前端之Android入门(2):程序目录 ...
随机推荐
- change color3
两种方法 第一种 DataGridview1.Rows[i].DefultCellStyle.backcolor 第二种 AlternatingRowsDefutCellstyle 属性 获取或设置应 ...
- 雷林鹏分享:C# 程序结构
C# 程序结构 在我们学习 C# 编程语言的基础构件块之前,让我们先看一下 C# 的最小的程序结构,以便作为接下来章节的参考. C# Hello World 实例 一个 C# 程序主要包括以下部分: ...
- LeetCode--342--4的幂
问题描述: 给定一个整数 (32 位有符号整数),请编写一个函数来判断它是否是 4 的幂次方. 示例 1: 输入: 16 输出: true 示例 2: 输入: 5 输出: false 进阶:你能不使用 ...
- hdu number number number 斐波那契数列 思维
http://acm.hdu.edu.cn/showproblem.php?pid=6198 F0=0,F1=1的斐波那契数列. 给定K,问最小的不能被k个数组合而成的数是什么. 赛后才突然醒悟,只要 ...
- vue组件,axios ,路由
组件(Component)自定义封装的功能. 把一个功能相关的[HTML.css和javascript]代码封装在一起组成一个整体的代码块封装模式,我们称之为“组件”. 组件就是一个html网页中的功 ...
- find xss
from :http://blog.sina.com.cn/s/blog_68d342d90100nh7b.html 什么是XSS跨站攻击: http://baike.baidu.com/view/5 ...
- D - Power Tower欧拉降幂公式
题意:给你一个数组a,q次查询,每次l,r,要求 \(a_{l}^{a_{l+1}}^{a_{l+2}}...{a_r}\) 题解:由欧拉降幂可知,最多log次eu(m)肯定变1,那么直接暴力即可,还 ...
- 6月16 ThinkPHP连接数据库及Model数据模型层--------查询及数据添加
连接数据库配置及Model数据模型层 convertion.php config.php 1.在config.php做数据库连接配置 2.修改配置 /* 数据库设置 */ 'DB_TYPE' => ...
- display: flex的兼容性写法
display: -moz-box; /*firefox*/ display: -ms-flexbox; /*IE10*/ display: -webkit-box; /*Safari*/ displ ...
- linux指令统计日志出现的次数
cat XXX.log|grep ''|grep '条件'| wc -l 单个条件统计 cat XXX.log|grep ''|grep '条件1'|grep '条件2'|grep '条件3' ...