我有一个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处理器,但我不能完全围绕整个过程。
答案 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_image
从request.form['idea_id']
访问它。