测开之路一百二十四: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如果要验证信 ...
随机推荐
- spring security OAuth2.0之客户端Client的实现
项目代码:https://github.com/hankuikuide/microservice-spring-security-oauth2 网上多数的项目客户端都是采用纯js写,或用postman ...
- scala学习笔记(8)
1.trait ------------------------------- 如果只有一个trait就使用extends进行扩展,如果是多个,就使用with对生于trait进行扩展 trait lo ...
- vue项目1-pizza点餐系统8-登陆和注册结构
<template> <!-- 设置行 --> <div class="row mt-3"> <!-- 设置列 --> <di ...
- HTML A标签 href click事件冲突
转自:https://blog.csdn.net/xinglu/article/details/45199337
- MongoDB入门_MongoDB特色
1. sql数据库与nosql数据库对比 nosql不支持实时一致性转而支持数据的最终一致性,数据有一定的延迟 redis数据库支持部分事物,而mongodb不支持事物 nosql数据库没有多表联查功 ...
- 动态SQL的注意
MyBatis的动态SQL元素. 元素 说明 <if> 判断语句,用于单条件分支判断 <choose>(<when>.<otherwise>) 相当于j ...
- 将pip源更换到国内镜像
将pip源更换到国内镜像用pip管理工具安装库文件时,默认使用国外的源文件,因此在国内的下载速度会比较慢,可能只有50KB/s.幸好,国内的一些顶级科研机构已经给我们准备好了各种镜像,下载速度可达2M ...
- 过滤函数filter
>>> def validate(usernames): if (len(usernames) > 4) and (len(usernames) < 12): retur ...
- SpringBoot框架(1)--入门篇
什么是SpringBoot? Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程. 特征 创建独立的Spring应用程序 直接嵌 ...
- ESP8266-12F
读者可以把ESP8266当做Arduino+WiFi功能来开发 ESP8266模块支持STA/AP/STA+AP 三种工作模式: STA 模式:ESP8266模块通过路由器连接互联网,手机或电脑通过互 ...