从另一个app.route中的URL获取值

时间:2014-03-05 16:46:46

标签: python html flask

我有一个Flask应用程序,可以在网址http://<webroot>/idea/<idea_id>下显示文字,例如http://localhost/idea/123。从数据库

请求idea_id
@app.route("/idea/<idea_id>", methods=["POST","GET"])
def get_idea(idea_id):
    db = get_db()
    cur = db.execute("select id, title, description, image from ideas where id=?", (idea_id,))
    ideas = cur.fetchall()
    args = request.path
    return render_template("idea.html", ideas=ideas)

在那个页面中我上传了一个文件:

<form action="{{ url_for("upload_image") }}" method="post" enctype="multipart/form-data">
    <p><input type="file" name="image">
    <input type=submit value="Hochladen">
</form>

以下是执行上传的代码:

@app.route("/upload_image", methods=["POST", "GET"])
def upload_image():
    if not session.get("logged_in"):
        abort(401)
    image = request.files["image"]
    if image and allowed_file(image.filename):
        db = get_db()
        idea_id = request.view_args["idea_id"]
        filename = secure_filename(image.filename)
        db.execute("INSERT OR REPLACE INTO ideas (id, image) VALUES (?, ?)", (idea_id, filename))
        image.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
        return flash("Bild hochgeladen!")
    return redirect(url_for("index"))

我想将图像的路径插入数据库并将其链接到想法的ID(idea_id)。

我的问题是如何从URL中使用idea_id-value?我想我需要URL处理器,但我不能完全围绕整个过程。

1 个答案:

答案 0 :(得分:0)

我会将其作为表单中的隐藏输入。

<form action="{{ url_for("upload_image") }}" method="post" enctype="multipart/form-data">
    <input type="hidden" name="idea_id" value="{{ idea_id }}">
    <p><input type="file" name="image">
    <input type=submit value="Hochladen">
</form>

这也需要修改你的观点。

@app.route("/idea/<idea_id>", methods=["POST","GET"])
def get_idea(idea_id):
    db = get_db()
    cur = db.execute("select id, title, description, image from ideas where id=?", (idea_id,))
    ideas = cur.fetchall()
    args = request.path
    return render_template("idea.html", ideas=ideas, idea_id=idea_id)

这会将idea_id放入request.form。然后,您可以使用upload_imagerequest.form['idea_id']访问它。