在Flask中完成CRUD操作

1、需要利用的到库

1
2
3
4
5
6
7
8
9
10
11
12
13
# python 表单库
from flask_wtf import FlaskForm
from flask_wtf.csrf import CSRFProtect
from wtforms import TextAreaField,SubmitField
from wtforms.validators import DataRequired

# flask 框架
from flask import Flask,render_template,redirect,url_for,flash,abort
# flask orm 框架
from flask_sqlalchemy import SQLAlchemy
import os
import click

建立数据模型

1
2
3
4
5
6
7
8
9
10
class Note(db.Model):
# 组件
id = db.Column(db.Integer,primary_key=True)
body=db.Column(db.Text)

# 在调试时,可以打印模型状态
# 例:note = Node(body="xsxs")
# print(note)
def __repr__(self) -> str:
return '<Note %r>' % self.body

1、新增数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 表单模型结构 需要配合 render_template使用
class NewNoteForm(FlaskForm):
# Body字段必填
body=TextAreaField('Body',validators=[DataRequired()])
submit=SubmitField('Save')


@app.route('/new',methods=['GET','POST'])
def new_note():
form = NewNoteForm()
# 如果点击提交按钮 保存数据
if form.validate_on_submit():
body=form.body.data
note=Note(body=body)
db.session.add(note)
db.session.commit()
# 模版文件 有flash显示提示
flash('Your note is saved!')
# 新增成功 跳转到首页 hello 指得是app.route('/') 包围的函数名
return redirect(url_for('hello'))
否则 显示表单页面
return render_template('new_note.html',form=form)

表单html 结构

1
2
3
4
5
6
7
8
9
10
11
12
13
# base.html 基础外壳 添加一些基础样式
{% extends 'base.html' %}

{% from 'macros.html' import form_field %}

{% block content %}
<h2>New Note</h2>
<form method="post">
{{ form.csrf_token }}
{{ form_field(form.body,rows=5,cols=50)}}
{{ form.submit }}
</form>
{% endblock %}