【问题标题】:Updating database through HTML and SQL alchemy form not working通过 HTML 和 SQL 炼金术表单更新数据库不起作用
【发布时间】:2021-02-06 23:16:22
【问题描述】:

通过调试我发现函数没有到达 if 语句,但我不知道如何解决这个问题,我猜测表单没有正确调用函数但可以'不知道为什么。

这是我要向其中添加数据的表

class Game(db.Model):
    __tablename__ = 'games'
    ID = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.Text, unique=True)
    dateadded = db.Column(db.Date)
    useradded = db.Column(db.ForeignKey('userinfo.username'))
    description = db.Column(db.Text, unique=True)
    datepublished = db.Column(db.Date)
    publisher = db.Column(db.ForeignKey('publishers.publishername'))
    developer = db.Column(db.ForeignKey('developers.developername'))
    developer1 = db.relationship('Developer', primaryjoin='Game.developer == Developer.developername', backref='games')
    publisher1 = db.relationship('Publisher', primaryjoin='Game.publisher == Publisher.publishername', backref='games')
    userinfo = db.relationship('Userinfo', primaryjoin='Game.useradded == Userinfo.username', backref='games')

HTML 表单

{% if session.get('user') %}
<br>
<form method="POST" name="creategame" action="/creategame">
    <input type="text" name="gamename" placeholder="game name">
    <input type="text" name="description" placeholder="game description">
    <input type="date" name="datepublished" placeholder="date published">
    <input type="text" name="publisher" placeholder="publisher">
    <input type="text" name="developer" placeholder="developer">
    <input type="hidden" value="{{ request.path }}" name="from"> 
    <input type="submit" class="button" value="Add Game">
</form>
{% endif %}
<br>

Python sqlalchemy 函数

@app.route('/creategame', methods=["POST"])
def creategame():
    user=current_user()
    if user:
        new_game = Game()
        new_publisher = Publisher()
        new_developer = Developer()
        new_game.name = request.form.get('gamename')
        new_game.dateadded = datetime.datetime.now()
        #new_game.dateadded = str(new_game.dateadded)
        #new_game.dateadded = new_game.dateadded.split(" ")
        #new_game.dateadded.pop(1)
        #new_game.dateadded = str(new_game.dateadded)
        #print(new_game.dateadded)
        new_game.useradded = current_user()
        new_game.description = request.form.get('description')
        new_game.datepublished = request.form.get('datepublished')
        new_game.publisher = request.form.get('publisher')
        new_publisher.publishername == new_game.publisher
        new_game.developer = request.form.get('developer')
        new_developer.developername == new_game.developer
        print(new_game.name, new_game.dateadded, new_game.useradded, new_game.description, new_game.datepublished, 
        new_game.publisher, new_game.developer) # debug
        if request.form.get('creategame'):
            print(new_game.name, new_game.dateadded, new_game.useradded, new_game.description, new_game.datepublished, 
            new_game.publisher, new_game.developer) # debug
            print("here the second") # debug
            db.session.add(new_developer)
            db.session.commit()
            db.session.add(new_publisher)
            db.session.commit()
            db.session.add(new_game)
            db.session.commit()
    return redirect(request.form.get('from', '/'))

【问题讨论】:

  • request.form.get('creategame') 不是表单的字段时,您期望返回什么?
  • 感谢您阐明它是如何工作的,我将如何使其成为表单中的一个字段?
  • 没想到我是个白痴
  • 请不要称自己为白痴。如果您找到了可以帮助其他人的解决方案,您可以发布答案。如果您发现错字或发现您的问题无效,您可以随时将其删除

标签: python html sqlite sqlalchemy


【解决方案1】:

改变了:

if request.form.get('creategame'):

到:

if request.form.get('gamename'):

这样实际上有一个字段来触发if语句

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-02
    • 1970-01-01
    • 1970-01-01
    • 2014-10-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多