【问题标题】:Creating a user editable form using flask and SQLite使用烧瓶和 SQLite 创建用户可编辑的表单
【发布时间】:2021-05-17 13:30:36
【问题描述】:

我正在为我的自制桌面 RPG 创建一个在线角色表,并且花了一些时间来创建角色表。它显示角色的所有统计数据。我正在使用 Flask 和 SQLite。

但是,在实际游戏过程中,角色的统计数据通常会发生变化。我希望用户能够更改字符表中的相关统计信息(xp、级别、生命值等),然后将其保存回 SQL 数据库。这可以做到吗?怎么样?

这是我在后端用来显示字符表的烧瓶代码中的 sn-p。

@app.route("/<int:character_id>")
@login_required
def character_sheet(character_id):

    characters = db.execute(
        """SELECT
            *
        FROM
            characters
        WHERE
            id = :id AND
            user_id = :user_id
        """,
        id = character_id,
        user_id = session ["user_id"],
    )

    if not characters:
        return abort(404)
    
    

    return render_template("character_sheet.html", character=characters[0])

这是字符表 HTML 的一部分。

{% extends "main.html" %}

{% block title %}
    Character Sheet
{% endblock %}

{% block main %}
      <div class="container-fluid">
        <div class="row">
          <div class="col"><h3>Basic Information</h3></div>
        </div>
        <div class="row">
          <div class="col border border-dark">Name</div>
          <div class="col border border-dark"><p class="written">{{ character.name }}</p></div>
          <div class="col border border-dark">Race</div>
          <div class="col border border-dark"><p class="written">{{ character.race }}</p></div>
        </div>
        <div class="row">
          <div class="col border border-dark">Class</div>
          <div class="col border border-dark"><p class="written">{{ character.cha_class }}</p></div>
          <div class="col border border-dark">Level</div>
          <div class="col border border-dark"><p class="big-written">{{ character.level }}</p></div>
          <div class="col border border-dark">Current Exp</div>
          <div class="col border border-dark"><p class="written">{{ character.experience }}</p></div>
          <div class="col border border-dark">Alignment</div>
          <div class="col border border-dark"><p class="written">{{ character.alignment_lc }}{{ character.alignment_ge }}</p></div>
        </div>
        <div class="row">
          <div class="col border border-dark">Height</div>
          <div class="col border border-dark"><p class="written">{{ character.height }}</p></div>
          <div class="col border border-dark">Weight</div>
          <div class="col border border-dark"><p class="written">{{ character.weight }}</p></div>
          <div class="col border border-dark">Eye Colour</div>
          <div class="col border border-dark"><p class="written">{{ character.eye_colour }}</p></div>
          <div class="col border border-dark"> Hair Colour</div>
          <div class="col border border-dark"><p class="written">{{ character.hair_colour }}</p></div>
        </div>
        <div class="row">
          <div class="col border border-dark">Sex</div>
          <div class="col border border-dark"><p class="written">{{ character.sex }}</p></div>
          <div class="col border border-dark">Age</div>
          <div class="col border border-dark"><p class="written">{{ character.age }}</p></div>
          <div class="col border border-dark">Handedness</div>
          <div class="col border border-dark"><p class="written">{{ character.handedness }}</p></div>
        </div>

【问题讨论】:

    标签: html sql flask


    【解决方案1】:

    不指出一些逻辑错误,只使用rest和javascript。 Rest(在服务器端)可以提供数据(也可以接收数据)。对于客户端,javascript可以接收数据(也可以发送)并相应地更改预览。还要使用分而治之的逻辑。例如,使用不同的 api 来提供字符数据。如果您想获得更多积分,请发表评论。

    【讨论】:

    • 嗨,乔治。感谢您的指点。老实说,我根本不熟悉休息。另外,我犯了什么逻辑错误?
    • 抱歉耽搁了。首先,关于逻辑错误。更具体地说,你如何编写代码。对于烧瓶,我建议使用管理 sql 的模块(例如 sqlalchemy)以避免一次又一次地编写 sql。它还使结果“更易于管理”。在 html 中,你在类中重复了太多的 div。您是否使用了 table 元素不可用的属性?二、关于休息,查看这篇文章sqlshack.com/create-rest-apis-in-python-using-flask休息和使用的快速解释。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-20
    相关资源
    最近更新 更多