flask表单后端增删查改方法记录总结(简单)

至此,一个简单的由前端向后端的form表单增删查改(基础)方式已经完成

# 用户删除
@bp.route('/delete', methods=['GET', 'POST'])
def delete():
    if request.method == 'GET':
        return render_template('delete.html')
    else:
        form = DeleteForm(request.form)
        if form.validate():
            username = form.username.data
            user = Usermodel.query.filter_by(username=username).first()
            if not user:
                print('User not found')
                return redirect(url_for('auth.delete'))
            else:
                Usermodel.query.filter_by(username=form.username.data).delete()
                db.session.commit()
                return "用户已删除完毕"

# 邮箱修改
@bp.route('update', methods=['GET', 'POST'])
def update():
    if request.method == 'GET':
        return render_template('update.html')
    else:
        form = UpdateForm(request.form)
        if form.validate():
            username = form.username.data
            user = Usermodel.query.filter_by(username=username).first()
            if not user:
                print("用户在数据库中不存在")
                return redirect(url_for('auth.update'))
            else:
                Usermodel.query.filter_by(username=form.username.data).update({'email': form.email.data})
                db.session.commit()
                return redirect(url_for('/'))



# 登录界面及密码验证
@bp.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'GET':
        return render_template('login.html')
    else:
        form = LoginForm(request.form)
        if form.validate():
            username = form.username.data
            password = form.password.data
            user = Usermodel.query.filter_by(username=username).first()
            if not user:
                print("用户在数据库中不存在!")
                return redirect(url_for('auth.login'))
            if check_password_hash(user.password, password):
                # cookie:只能存储少量东西--通过cookie识别,通常存放登录授权的东西
                # flask中的session,是通过加密后存储在cookie中的
                session['user_id'] = user.id
                return redirect('/')
            else:
                print('密码错误!')
                return redirect(url_for('auth.login'))
        else:
            print(form.errors)
            return redirect(url_for('auth.login'))


# 表单验证:flask-wtf

@bp.route('/myregister', methods=['GET', 'POST'])
def register():
    if request.method == 'GET':
        return render_template('myregist.html')
    else:
        # 表单验证:flask-wtf: wtforms
        form = RegistrationForm(request.form)
        if form.validate():
            username = form.username.data
            password = form.password.data
            email = form.email.data
            user = Usermodel(username=username, password=generate_password_hash(password), email=email)
            db.session.add(user)
            db.session.commit()
            return redirect(url_for('auth.login'))
        else:
            print(form.errors)
            return redirect(url_for('auth.register'))

这是这段时间学习的一个小的记录,其中flask用到的方法有:

Blueprint, render_template, request, redirect, url_for, session

.form中有:

RegistrationForm, LoginForm, UpdateForm, DeleteForm(这些是我自己在form中创建的类,其实可以不用那么麻烦,因为存在重复的内容,存在“尸体”代码)
from werkzeug.security import generate_password_hash, check_password_hashh

还导入了该方法对密码进行加密 ------ 以下是该author.py导入的库

from flask import Blueprint, render_template, request, redirect, url_for, session
from sqlalchemy.testing.pickleable import User
from exts import mail, db
from flask_mail import Message
from .forms import RegistrationForm, LoginForm, UpdateForm, DeleteForm
from models import Usermodel
from werkzeug.security import generate_password_hash, check_password_hash

# 这里的url_prefix代表的蓝图前缀,以后访问就是以/auth/...来访问
bp = Blueprint('auth', __name__, url_prefix='/auth')

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用flask-sqlalchemy进行增删改查操作非常方便。下面是一些示例代码来说明如何使用flask-sqlalchemy进行增删改查操作: 1. 增加数据: 使用模型类的构造函数创建一个新的对象,并将其添加到数据库会话中,然后使用会话的`add()`方法将其添加到数据库中。 示例代码如下: ``` from flask_sqlalchemy import SQLAlchemy db = SQLAlchemy() class User(db.Model): id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(80), unique=True) email = db.Column(db.String(120), unique=True) user = User(username='John', email='john@example.com') db.session.add(user) db.session.commit() ``` 2. 删除数据: 使用模型类的`query`属性和`filter_by()`方法来筛选要删除的数据,并使用会话的`delete()`方法将其从数据库中删除。 示例代码如下: ``` user = User.query.filter_by(username='John').first() db.session.delete(user) db.session.commit() ``` 3. 修改数据: 使用模型类的`query`属性和`filter_by()`方法来筛选要修改的数据,并通过修改对象的属性来更新数据。 示例代码如下: ``` user = User.query.filter_by(username='John').first() user.email = 'new_email@example.com' db.session.commit() ``` 4. 查询数据: 使用模型类的`query`属性和各种查询方法来检索数据,例如`all()`方法获取所有数据,`filter_by()`方法根据条件筛选数据等。 示例代码如下: ``` users = User.query.all() # 获取所有用户数据 user = User.query.filter_by(username='John').first() # 根据用户名获取用户数据 ``` 这些是使用flask-sqlalchemy进行增删改查操作的基本示例。你可以根据需要进行调整和扩展来实现特定的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值