Flask蓝图的增删改查
怎样用flask蓝图来实现增删改查呢?请看下面的内容
这是我们的目录结构

从图中可以看出每一个功能都有一个各自的文件夹
首先我们要自己先来创建一个数据,在Flask_data.py中写入如下内容:
STUDENT = [
{'id': 1, 'name': '萝卜忒', 'age': 38, 'gender': '男'},
{'id': 2, 'name': '齐欧能', 'age': 21, 'gender': '男'},
{'id': 3, 'name': '王玉萌', 'age': 24, 'gender': '女'},
{'id': 4, 'name': '王婕雨', 'age': 23, 'gender': '女'},
{'id': 5, 'name': '葛二蛋', 'age': 28, 'gender': '男'},
]
然后开始写每一个的功能,具体如下:
查找功能:
也就是显示功能,将Flask_data.py文件中的内容读取并显示出来
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>学生列表</title>
</head>
<body>
<table border="3xp">
<thead>
<tr>
<td>ID</td>
<td>name</td>
<td>age</td>
<td>gender</td>
<td>options</td>
</tr>
</thead>
<tbody>
{% for foo in student %}
<tr>
<td>{{ foo.id }}</td>
<td>{{ foo["name"] }}</td>
<td>{{ foo.get("age") }}</td>
<td>{{ foo.gender }}</td>
<td> <a href="/update/{{ foo.id }}">修改</a> | <a href="/flask_del/{{ foo.id }}">删除</a> </td>
</tr>
{% endfor %}
</tbody>
</table>
<a href="/add"> 添加学生 </a>
</body>
</html>
select.html
from flask import Blueprint, render_template
from Flask_data import STUDENT select_list = Blueprint("select_list", __name__, template_folder="temp", static_folder="static") @select_list.route("/select_list")
def select():
return render_template("select.html", student=STUDENT)
select.py
添加功能:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>学生列表</title>
</head>
<body>
<form method="post">
ID:<input type="text" name="id"> <br>
姓名:<input type="text" name="name"><br>
年龄:<input type="text" name="age"><br>
性别:<input type="text" name="gender"><br>
<input type="submit" value="添加学生">
</form> </body>
</html>
add.html
from flask import Blueprint,redirect,request,render_template
from Flask_data import STUDENT add = Blueprint("add", __name__, template_folder="temp", static_folder="static") # type:Blueprint @add.route("/add",methods=["GET","POST"])
def add_view():
if request.method == "POST":
stu_dic = {
"id": request.form["id"],
"name": request.form["name"],
"age": request.form["age"],
"gender": request.form["gender"]
} STUDENT.append(stu_dic) return redirect("/select_list") return render_template("add.html")
add.py
修改功能:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>学生列表</title>
</head>
<body>
<form method="post">
<input type="text" name="id" hidden value="{{ student.id }}"><br>
姓名:<input type="text" name="name" value="{{ student.name }}"><br>
年龄:<input type="text" name="age" value="{{ student.age }}"><br>
性别:<input type="text" name="gender" value="{{ student.gender }}"><br>
<input type="submit" value="修改信息">
</form> </body>
</html>
update.html
from flask import Blueprint, render_template, redirect, request
from Flask_data import STUDENT update = Blueprint("update", __name__, template_folder="temp", static_folder="static") @update.route("/update/<int:nid>",methods=["GET","POST"])
def update_view(nid):
if request.method == "POST":
stu_id = int(request.form["id"])
stu_dic = {
"id": stu_id,
"name": request.form["name"],
"age": request.form["age"],
"gender": request.form["gender"]
} for index,stu in enumerate(STUDENT):
if stu["id"] == stu_id:
STUDENT[index] = stu_dic return redirect("/select") for stu in STUDENT:
if stu["id"] == nid :
return render_template("update.html", student=stu) return render_template("update.html", student="")
update.py
删除功能:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>学生列表</title>
</head>
<body>
<table border="3xp">
<thead>
<tr>
<td>ID</td>
<td>name</td>
<td>age</td>
<td>gender</td>
<td>options</td>
</tr>
</thead>
<tbody>
{% for foo in student %}
<tr>
<td>{{ foo.id }}</td>
<td>{{ foo["name"] }}</td>
<td>{{ foo.get("age") }}</td>
<td>{{ foo.gender }}</td>
<td> <a href="/update/{{ foo.id }}">修改</a> | <a href="/flask_del/{{ foo.id }}">删除</a> </td>
</tr>
{% endfor %}
</tbody>
</table>
<a href="/add"> 添加学生 </a>
</body>
</html>
del.html
from flask import Blueprint, redirect, request, render_template
from Flask_data import STUDENT flask_del = Blueprint("flask_del", __name__, template_folder="temp", static_folder="static") # type:Blueprint @flask_del.route("/flask_del/<int:nid>",methods=["GET","POST"])
def flask_delapp(nid):
STUDENT1 = []
for stu in STUDENT:
if stu["id"] == nid:
pass
else:
STUDENT1.append(stu)
return render_template("select.html", student=STUDENT1)
flask_del.py
各个功能写完后就要写主要启动文件了,我们在manager.py文件中写入启动内容:
from flask import Flask
from Flask_select import select
from Flask_add import add
from Flask_update import update
from Flask_del import flask_del def flask_app():
app = Flask(__name__)
app.register_blueprint(select.select_list)
app.register_blueprint(add.add)
app.register_blueprint(update.update)
app.register_blueprint(flask_del.flask_del) return app flask_app().run()
manager.py
运行manager.py文件就行了,谢谢
Flask蓝图的增删改查的更多相关文章
- 前端web通过flask操作数据库-增删改查
后端python代码: #coding:utf8 from flask import Flask,request,render_template import pymysql as mysql imp ...
- flask操作(增删改查操作)
增加数据 from .models import Goods from app.extensions import db goods1 = Goods(name='魅族18s', price=3400 ...
- 通过flask实现web页面简单的增删改查bootstrap美化版
通过flask实现web页面简单的增删改查bootstrap美化版 项目目录结构 [root@node1 python]# tree -L 2 . ├── animate.css ├── fileut ...
- 通过flask实现web页面简单的增删改查
通过flask实现web页面简单的增删改查 # 1.后台程序falsk_web01.py #coding:utf-8 from flask import Flask,render_template,r ...
- [py]flask从0到1-模板/增删改查
flask知识点 1.后端渲染html到前端 render_template 2.后端获取前端数据 request.args.get 3.前端获取后端数据 模板 4.警示消息 flash {{ get ...
- Flask一种通用视图,增删改查RESTful API的设计
模型设计是后端开发的第一步.数据模型反映了各种对象之间的相互关系. from app import db class Role(db.Model): """角色" ...
- day94:flask:Jinjia2模板引擎&flask中的CSRF攻击&Flask-SQLAlchemy的创建模型类和基本的增删改查
目录 1.Jinjia2模板引擎 1.Jinjia2加载模板并传递数据到模板中 2.Jinjia2的模板语句 3.模板中特有的变量和函数 4.模板中内置的过滤器 5.自定义过滤器 6.模板继承 2.在 ...
- python 10min系列之实现增删改查系统
woniu-cmdb 奇技淫巧--写配置文件生成增删改查系统 视频教程 项目主页跪求github给个star, 线上demo,此页面都是一个配置文件自动生成的 详细的文章介绍和实现原理分析会发布在我的 ...
- Hibernate第一个程序(最基础的增删改查) --Hibernate
本例实现Hibernate的第一个程序,Hibernate的优点我想大家都很清楚,在这里不做过多赘述.总之,使用Hibernate对数据库操作,也就是来操作实体对象的! 项目目录: 一.第一步要做的就 ...
随机推荐
- sharepoint Foundation 2013 error
安装必须软件时提示以下错误 错误提示日志: 015-05-28 10:40:25 - Request for install time of 应用程序服务器角色.Web 服务器(IIS)角色2015- ...
- #410div2C. Mike and gcd problem
C. Mike and gcd problem time limit per test 2 seconds memory limit per test 256 megabytes input stan ...
- [51nod]多重背包模板
https://www.51nod.com/tutorial/course.html#!courseId=11 题目大意: 有$N$种物品和一个容量为$W$的背包.第$i$种物品最多有$c[i]$件可 ...
- 【总结整理】JavaScript的DOM事件学习(慕课网)
事件:在文档或者浏览器窗口中发生的一些,特定的交互瞬间 HTML和JavaScript的交互通过事件 来实现 比如:1.滚动条向下滑动,加载图片 2.图片轮播,鼠标由2-5页调换 本章内容1.理解事件 ...
- Maven 命令格式及一些常用命令
Maven自身指定定义了一套对项目进行编译,测试,打包,运行,部署等工作的抽象.Maven自己是不实际负责这些工作的,而是把它们交给了插件.所以Maven命令的实际工作执行者是各种各样的插件. 要了解 ...
- 怀旧系列(1)----FBasic
小时候,老爸斥巨资给我买了一台小霸王学习机.玩遍了所有游戏后,里面有个F-Basic语言,黑乎乎的,一点也不好玩.直到杰兄从学校带回一本BASIC语言,才知道这玩意儿还可以编辑**图案.由于没有人指导 ...
- adnroid 启动是没有标题栏
<activity android:name=".MainActivity" android:theme="@android:style/Theme.Light.N ...
- 网易 UI 自动化工具 Airtest 浅用记录
一 使用目的 该工具主要是面向游戏UI测试基于图像识别,如游戏框架unity,Cocos-js以及网易内部的游戏框架 同时也支持原生Android App 的基于元素识别的UI自动化测试. 本文主要使 ...
- Hadoop WordCount单词计数原理
计算文件中出现每个单词的频数 输入结果按照字母顺序进行排序 编写WordCount.java 包含Mapper类和Reducer类 编译WordCount.java javac -classpath ...
- 如何给自己的开源项目选择和添加 License
License 的作用:开源 == 为所欲为? 开源并不等于为所欲为! 代码的用途,修改之后的代码有什么要求,开源程序对于原作者的权利和责任等等,都是需要明确的. 开源协议 License 就是这么一 ...