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对数据库操作,也就是来操作实体对象的! 项目目录: 一.第一步要做的就 ...
 
随机推荐
- C++中的友元小结
			
我们知道,在一个类总可以有公有的(public)成员和私有的(private)成员.在类外可以访问公用成员,只有本类中的函数可以访问本类的私有成员. 现在,我们学习一种新的情况--友元. 在C++中, ...
 - bos物流面试题
			
BOS物流项目问题汇总 1 请描述一下这个系 统? 从两个方面回答, 第一个方面:系统背景及系统概述 本系统是基于B/S架构而设计开发的,是某物流公司的一个后台管理系统,属于物流公司整个ERP平台的一 ...
 - 树莓派 Learning 002 装机后必要的操作 --- 10 实现本地电脑与远程桌面之间复制粘贴(传输)文件
			
树莓派 装机后必要的操作 - 实现本地电脑与远程桌面之间复制粘贴(传输)文件 我的树莓派型号:Raspberry Pi 2 Model B V1.1 装机系统:NOOBS v1.9.2 PC端系统:w ...
 - 12、scala隐式转换与隐式参数
			
一.隐式转换 1.介绍 Scala提供的隐式转换和隐式参数功能,是非常有特色的功能.是Java等编程语言所没有的功能.它可以允许你手动指定,将某种类型的对象转换成其他类型的对象. 通过这些功能,可以实 ...
 - 做c语言的码农专业发展方向
			
写了几年C语言代码,最近在思索,何去何从比较好? 搜索了一下,发现几个答案: 2015年10月编程语言排行榜 丢开C语言在教学应用外.在目前C语言的实际应用中.常见的应用的情景有如下: 内核/驱动,b ...
 - 阶段2-新手上路\项目-移动物体监控系统\Sprint3-移动监控主系统设计与开发
			
移动图像监控系统 去找一些相关开源程序进行移植:百度搜索-linux 移动监控 motion是一套免费开源的移动图像监测程序 前面我们已经使用了很多开源软件,他们的使用方法都是大同小异的 1).先在当 ...
 - java基础之介绍
			
1.JAVA涉及在服务器领域上主要有 Linux.Unix.Windows等(其中Linux和Unix是大部分服务器用的主要的系统) 2.JAVA之所以发展的原因 1.java得到了很多的支持,拥有许 ...
 - 2017-10-5 清北刷题冲刺班a.m
			
行列式 序列 #include<iostream> #include<cstdio> #define maxn 500010 using namespace std; int ...
 - HDU2048 神、上帝以及老天爷
			
题目:http://acm.hdu.edu.cn/showproblem.php?pid=2048 看书发现了这道题,刚开始没理解题意,以为是中奖的概率,---> 1/n 后来知道了是典型的错排 ...
 - php模拟post提交数据
			
$data = '{ "id": "17999030", "method": "sayHello", "jso ...