【问题标题】:How can I concatenate two user inputs in a flask app?如何在烧瓶应用程序中连接两个用户输入?
【发布时间】:2026-02-22 23:50:01
【问题描述】:

我在烧瓶中有一个应用程序,它有两个字段作为用户输入,但是,我想连接输入以使用 sqlalchemy 在 sql 表中查询结果,但是它一直给我错误:

TypeError:+ 不支持的操作数类型:“NoneType”和“NoneType”

@search.route('/specie_results', methods=['GET','POST'])
def specie_results():
    form = SpecieSearchForm()
    genus = form.genus.data
    specie = form.specie.data
    species = genus + specie
    species_req = Files.get_by_species(species)
    return render_template ('specie_results.html', form=form, species_req=species_req)

这是我的表单代码

class SpecieSearchForm(FlaskForm):
    genus = StringField('genus', validators=[DataRequired(), Length(max=64)])
    specie = StringField('specie', validators=[DataRequired()])
    submit = SubmitField('specie search’)

模型代码:

class Files(db.Model):
    __tablename__ = 'files'
    id = db.Column(db.Integer, primary_key=True)
    filename = db.Column(db.String(100), unique=False, nullable=False)
    intensity = db.Column(db.Float, unique=False, nullable=False)
    mz = db.Column(db.Float, unique=False, nullable=False)
    origin = db.Column(db.String(100), unique=False, nullable=False)
    species = db.Column(db.String(60), unique=False, nullable=False)
    wd = db.Column(db.String(60), unique=False, nullable=False)
    time_created = db.Column(db.DateTime(timezone=True), server_default=func.now())
    time_updated = db.Column(db.DateTime(timezone=True), onupdate=func.now())

    def save(self):
        if not self.id:
            db.session.add(self)
            db.session.commit()
    def delete(self):
        db.session.delete(self)
        db.session.commit()

    @staticmethod
    def get_all():
        return Files.query.all()

    @staticmethod
    def get_by_species(species):
        return Files.query.filter_by(species=species).all()

我需要连接 genus 和 specie 以匹配字段中的物种,但我不知道如何在没有错误的情况下做到这一点。

【问题讨论】:

    标签: python-3.x flask flask-sqlalchemy


    【解决方案1】:

    表单数据似乎为空。这就是它返回 none 类型的原因。您已经将验证器放入类中,因此在处理数据之前验证表单。

    将代码更改为此并检查。

    @search.route('/specie_results', methods=['GET','POST'])
    def specie_results():
        form = SpecieSearchForm()
        if form.validate_on_submit():
            genus = form.genus.data
            specie = form.specie.data
            species = genus + specie
            species_req = Files.get_by_species(species)
        return render_template ('specie_results.html', form=form, species_req=species_req)
    

    【讨论】:

      最近更新 更多