测开之路一百二十四:flask之MVC响应过程
MVC流程
原本的请求响应
结构:
视图:
from flask import Flask, render_template app = Flask(__name__) @app.route("/books/")
def book_list():
return render_template('book_list.html') if __name__ == '__main__':
app.run(debug=True)
html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>图书列表</title>
</head>
<body>
<h1>图书列表</h1>
<ul>
<li>标题: </li>
<li>定价: </li>
<li>作者: </li>
<li>出版社: </li>
</ul>
</body>
</html>
请求
MVC过程:
新建一个文件夹用于存放处理逻辑
写一个简单的初始化逻辑
class Book: def __init__(self, title, price, auther, publisher):
self.title = title
self.price = price
self.auther = auther
self.publisher = publisher def __str__(self):
return f'<Book {self.title}>'
视图函数调用,并传给html,第一个book为html里面的位置参数,第二个book为真实数据
from flask import Flask, render_template
from modles.book import Book app = Flask(__name__) @app.route("/books/")
def book_list():
book = Book('xx课程', 100, 'xx作者', 'xxx出版社', )
return render_template('book_list.html', book=book) if __name__ == '__main__':
app.run(debug=True)
render_template()支持传入参数
html渲染,janja2接收参数:{{ 位置参数 }}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>图书列表</title>
</head>
<body>
<h1>图书列表</h1>
<ul>
<li>标题: {{ book.title }}</li>
<li>定价: {{ book.price }}</li>
<li>作者: {{ book.auther }}</li>
<li>出版社: {{ book.publisher }}</li>
</ul>
</body>
</html>
访问
渲染列表
from flask import Flask, render_template
from modles.book import Book app = Flask(__name__) @app.route("/books/")
def book_list():
books = [
Book('1.1', '1.2', '1.3', '1.4'),
Book('2.1', '2.2', '2.3', '2.4'),
Book('3.1', '3.2', '3.3', '3.4'),
Book('4.1', '4.2', '4.3', '4.4')
]
return render_template('book_list.html', books=books) if __name__ == '__main__':
app.run(debug=True)
html里面用for循环渲染
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>图书列表</title>
</head>
<body>
<h1>图书列表</h1>
<table border="1" cellpadding="5">
<tr>
<td>书名</td>
<td>定价</td>
<td>作者</td>
<td>出版社</td>
</tr>
{% for book in books %}
<tr>
<td>{{ book.title }}</td>
<td>{{ book.price }}</td>
<td>{{ book.auther }}</td>
<td>{{ book.publisher }}</td>
</tr>
{% endfor %}
</table>
</body>
</html>
访问
测开之路一百二十四:flask之MVC响应过程的更多相关文章
- 测开之路一百五十四:ajax+json前后台数据交互
在实际工作中,前后端数据交互大部分都是用的json格式,后端把数据处理完后,把json传给前端,前端再解析 项目结构 models里面加入把数据转为字典的方法 from datetime import ...
- 测开之路一百二十九:jinja2模板语法
flask用的是jinja2模板,有自己特定的语法 形参: 在html里面留占位参数: {{ 参数名 }},后端传值时,参数名=参数值 <!DOCTYPE html><html la ...
- 测开之路一百二十八:flask之重定向和404
a.b两个视图,分别返回a的页面和b的页面 重定向:redirect 重定向到路由:请求/a/时,重定向到/b/ 重定向到视图函数:url_for(“函数名“),访问/a/时,重定向到函数b() 主动 ...
- 测开之路一百二十六:flask之获取request请求数据
可以根据flask的request对象获取所有的请求信息 path = request.path # 获取请求地址method = request.method # 获取请求方法ip = reques ...
- 测开之路一百二十五:flask之urlencode参数传递和解析
当get请求传参时,用?分隔参数和域名,用&分隔参数,如果参数里面本身就有&符号就会识别不出来,还是会当成分隔符,所以这些数据在传输的时候,就需要转义,现在普遍是转成urlencode ...
- 测开之路一百二十七:flask之构造response对象
可以使用flask.make_response构造自定义响应信息 构造一个响应信息为文本,状态码为404 响应 响应数据为json,状态码为200 返回html # coding:utf-8from ...
- 测开之路一百五十二:基于jquery的ajax实现之load、get、ajax
ajax除了用原生的js实现之外,也可以使用jquery实现,而且用jquery更方便 看一个简单的示例,保留上一篇的content路由和html,实现上一篇一样的功能,点击获取内容,局部刷新 准备一 ...
- 测开之路一百二十三:快速搭建python虚拟环境
前提:已装好python3.4+且环境可正常运行 一:手动搭建: 准备好一个工作目录 管理员运行cmd,进入到准备的目录里面 执行命令:python -m venv 虚拟环境名 激活虚拟环境(在ven ...
- 测开之路一百五十五:jquery-validation前台数据验证
前面做的wtform验证是服务器端的验证,需要把数据传输到服务器,服务器验证后再吧结果传输到前端,网络慢的时候,用户体验不好,所以需要前端验证,且后端验证不能少 传统的js或者jquery如果要验证信 ...
随机推荐
- C++ delete仍可访问的问题
C++ delete和置为NULL 先上一段代码: class Object { public: explicit Object(int num) : m_num(num){} void functi ...
- Kibana 基本操作
es中的索引对应mysql的数据库.类型对应mysql的表.文档对应mysql的记录.映射对应mysql的索引索引:index类型:type映射:mappings 1.创建索引在kibana的Dev ...
- windows安装nginx部署
转自:https://www.jb51.net/article/47066.htm 一.下载安装Nginx(本文环境为windows xp 32bit环境) 解压nginx-1.0.11.zip,进入 ...
- Mysql逻辑架构介绍
总体概览: 和其它数据库相比,MySQL有点与众不同,它的架构可以在多种不同场景中应用并发挥良好作用.主要体现在存储引擎的架构上,插件式的存储引擎架构将查询处理和其它的系统任务以及数据的存储提取相分离 ...
- ResultEntity
就是封装的一个map集合 省时省力好用 package com.ujy.utils; import java.util.HashMap; import java.util.Map; public c ...
- At grand 022 GCD序列构造 dp/floyd二进制变换最少费用
A diverse words指的是每一个字母在单词中出现的次数不超过1的单词 题目要求你求出字典序比当前给定单词大的字典序最小单词 1.如果给定的单词长度小于26 就遍历一次在单词尾部加上字典序最小 ...
- TCP/IP基础总结性学习(7)
确保 Web 安全的 HTTPS 在 HTTP 协议中有可能存在信息窃听或身份伪装等安全问题.使用 HTTPS 通信机制可以有效地防止这些问题. 一. HTTP 的缺点 HTTP 主要有这些不足,例举 ...
- ARM指令集的最新版本包括针对JavaScript的优化
在ARM指令集中,ARMv8.3添加了一个新的float-to-int指令,其错误和超出范围的值按照JavaScript的方式处理.以前[指令]获取JavaScript的语义要慢得多,JavaScri ...
- handy源码阅读(四):Channel类
通道,封装了可以进行epoll的一个fd. struct Channel: private noncopyable { Channel(EventBase* base, int fd, int eve ...
- C 实现 创建多个txt文件,并以自然数列命名,然后将产生的十进制数据写入txt文档
首先:以自然数列为txt命名. 这在C++中很容易实现,之间诶to_string(int num)+".txt"就可以,但是在C中没有string,只有char,那怎么办? 这里需 ...