栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

flask-sqlalchemy+wtforms实现标签动态更新

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

flask-sqlalchemy+wtforms实现标签动态更新

解决循环导入的问题

我的目录结构:

  1. 创建一个ext.py将db的初始化隔离

    from flask_sqlalchemy import SQLAlchemy
    
    db = SQLAlchemy()
    
  2. 在实例化form对象时再传入db

    from flask import Blueprint, request, render_template
    from app01.ext import db
    from app01.views.user.forms import LoginForm
    
    blue_user = Blueprint('user', __name__, template_folder='./templates', url_prefix='/user')
    
    
    @blue_user.route('/', methods=['get', 'post'])
    def index():
        if request.method == 'GET':
            form = LoginForm(db=db)
            return render_template('html.html', form=form)
        else:
            form = LoginForm(formdata=request.form,db=db)
            print(form.validate())
            print(form.data)
            print(form.errors)
            return render_template('html.html', form=form)
    
动态更新标签
from wtforms import widgets, validators, Form
from wtforms.fields import simple, html5, core
from app01.views.user import models


class LoginForm(Form):
    def __init__(self, db=None, **kwargs):
        super().__init__(**kwargs)
        self.name.choices = db.session.query(models.User.id, models.User.username).order_by('id').all()

    name = core.SelectMultipleField(
        label='城市',
        choices=[],
        coerce=int
    )
  1. 每次实例化form即每次请求时从数据库拿到数据
  2. coerce=int

对于俺这种小白来说,sqlalchemy太容易出现循环导入了,所以干脆把实例化踢出去比较好。导包都能死锁,我也是醉了,搞得一个头两个大。T_T

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/444616.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号