我对Flask非常陌生。我有一个mysql数据库和一个模板。假设我有3张图片
<a href="#"><div><img src= pathOfImage id="profile1"/></div></a>
<a href="#"><div><img src= pathOfImage id="profile2"/></div></a>
<a href="#"><div><img src= pathOfImage id="profile3"/></div></a>
每个图像的ID(profile1,profile2,profile3)是数据库中某些表的主键。我想要做的是通过使用主键查找该元组的相应属性的值。然后,将这些值从元组加载到模板。
而且,我在Python中具有以下代码:
from flask import *
@app.route("/")
def index():
return render_template("index.html")
@app.route('/experts')
def route1():
return render_template("experts.html", data=data)
我上面给出的HTML代码段位于expert.html中。我几乎没有上面列出的SQL查询,在route1()中render_template的第二个参数上的数据是SQL元组,它生成所有这些图像和ID。
我尝试在图像旁边放置一个按钮,并给按钮赋予ID。然后,使用Ajax将id作为变量传递给python脚本,并获取SQL元组。
但是,这并不是困难的部分。困难的部分是制作新路线并加载内容。我尝试使用“ app.route”制作一条新路线,并将数据传递到render_template的第二个参数中。但是,它没有重定向到新的配置文件,并且甚至在我单击配置文件之前就调用了该方法。
以前,我使用按钮来检索ID:
<html>
<body>
<a href="{{ url_for('route2') }}"> <button id='1'>Button1</button></a>
<a href="{{ url_for('route2') }}"><button id='2'>Button2</button></a>
<a href="{{ url_for('route2') }}"><button id='3'>Button3</button></a>
</body>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"</script>
<script>
$(document).ready(function() {
$('button').click(function(event) {
var the_id = event.target.id;
$.ajax({
url: "/get_id",
type: "get",
data: {the_id: the_id},
success: function(response) {
},
error: function(xhr) {
}
});
})});
</script>
然后,我用它们来生成一个新模板:
import flask
from flask import *
from flaskext.mysql import MySQL
@app.route("/")
def index():
return render_template("index.html")
@app.route('/experts')
def route1():
return render_template("experts.html", data=data)
@app.route('/get_id')
@app.route('/profile')
def route2():
button_id '"' + flask.request.args.get('the_id') + '"'
//some code here to get the tuples that I need "client_info" and
//"skill_info" variable below
return render_template("profile.html", client_info=client_info,
skill_info=skill_info)
希望有人会重新开始。预先感谢!
答案 0 :(得分:0)
0
...我猜是吗?也许?
答案 1 :(得分:-1)
您可以通过路由URL传递信息,而不必通过ajax传递信息。
<a href="{{ url_for('route2') }}/profile1"><div><img src="pathOfImage"></div></a>
<a href="{{ url_for('route2') }}/profile2"><div><img src="pathOfImage"></div></a>
<a href="{{ url_for('route2') }}/profile3"><div><img src="pathOfImage"></div></a>
import flask
from flask import *
from flaskext.mysql import MySQL
@app.route("/")
def index():
return render_template("index.html")
@app.route('/experts')
def route1():
return render_template("experts.html", data=data)
@app.route('/profile/<id>')
def route2(id):
# id variable contains user profile id string as per user click
# depending on id set variables client_info and skill_info and render
return render_template("profile.html", client_info=client_info, skill_info=skill_info)