首页 > 解决方案 > 将参数传递给烧瓶 GET 函数

问题描述

我正在尝试编写一个简单的消息传递功能,尽管进行了搜索,但在想出一个可行的解决方案时遇到了麻烦。在 get 函数上,代码检索存储的消息并将其传递给呈现。

post 函数存储所有工作正常的消息,但是我试图将用户重定向回他们来自的原始页面以显示新消息,因此试图将接收用户变量传递给 get 函数。

到目前为止,我的代码如下。我是烧瓶的新手,所以也会感谢任何其他指针。提前致谢!

@app.route("/messaging", methods=["GET", "POST"])
@login_required
def messaging():
    if request.method == "GET":

        clicked_user = request.args.get('user')
        messages = db.execute("SELECT * FROM messages WHERE (m_sending_user = :self_user AND m_receiving_user = :other_user) OR (m_sending_user = :other_user AND m_receiving_user = :self_user)",
                        self_user = session["user_id"],
                        other_user = clicked_user)

        return render_template("messaging.html", messages=messages, clicked_user=clicked_user)

    if request.method == "POST":

        receiving_user = request.form.get("recipient")

        db.execute("INSERT INTO messages (m_sending_user, m_receiving_user, message) VALUES (:m_sending_user, :m_receiving_user, :message)",
                        m_sending_user = session["user_id"],
                        m_receiving_user = receiving_user,
                        message = request.form.get("reply"))

        flash("Sent!")
        return render_template("messaging.html")

标签: pythonflask

解决方案


为什么你不简单地让 post 函数也像这样调用 get 函数

def get_function(clicked_user):
    messages = db.execute("SELECT * FROM messages WHERE (m_sending_user = :self_user AND m_receiving_user = :other_user) OR (m_sending_user = :other_user AND m_receiving_user = :self_user)",
                  self_user = session["user_id"],
                  other_user = clicked_user)

    return render_template("messaging.html", messages=messages, clicked_user=clicked_user)

@app.route("/messaging", methods=["GET", "POST"])
@login_required
def messaging():
    if request.method == "GET":

        clicked_user = request.args.get('user')

        return get_function(clicked_user)

    if request.method == "POST":

        receiving_user = request.form.get("recipient")

        db.execute("INSERT INTO messages (m_sending_user, m_receiving_user, message) VALUES (:m_sending_user, :m_receiving_user, :message)",
                        m_sending_user = session["user_id"],
                        m_receiving_user = receiving_user,
                        message = request.form.get("reply"))

        flash("Sent!")
        return get_function(m_receiving_user)

但当然有更好的命名函数;)


推荐阅读