如何获得模板和Python在Flask中进行通信?

时间:2018-06-25 00:54:04

标签: python html flask web-development-server

例如,如果我在index.html中包含以下代码:

<div id='1'></div>
<div id='2'></div>
<div id='3'></div>

而且,我在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)

因此,在三个div块中。当我单击其中任何一个时。我希望程序知道我单击的那个,然后将id(1、2、3)的值传递给python中的数据变量,以便可以在“ expert.html”上使用它。

有哪些好的方法可以实现它?谢谢你!

1 个答案:

答案 0 :(得分:1)

您可以使用按钮代替ajax。这样,可以在前端使用"index.html"来获取单击的按钮的ID并将其传递给后端:

<html> <body> <button id='1'>Button1</button> <button id='2'>Button2</button> <button id='3'>Button3</button> </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) { window.location.replace('/experts'); }, error: function(xhr) { //Do Something to handle error } }); }); </script> </html>

ajax

然后,可以创建用于接收ID的路由,可以将flask.session的结果存储在ajax中,并且可以将“成功”对象传递回{{1} } index.html模板中。通过模板中的jquery,可以将应用重定向到/expert

import flask
app = flask.Flask(__name__)
app.secret_key = 'SOME_SECRET_KEY'
@app.route('/get_id')
def expert():
  button_id = flask.request.args.get('the_id')
  flask.session['button_id'] = button_id
  return flask.jsonify({'success':True})

@app.route('/experts', methods=['GET'])
def experts():
  return render_template("experts.html", data=flask.session['button_id'])