Как я могу получить шаблон и Python для общения во Flask? - PullRequest
0 голосов
/ 25 июня 2018

Например, если у меня есть следующий код в 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 голосов
/ 25 июня 2018

Вместо divs вы можете использовать кнопки.Таким образом, ajax можно использовать во внешнем интерфейсе, чтобы получить идентификатор нажатой кнопки и передать его бэкэнду:

"index.html":

<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 могут быть сохранены в flask.session, а объект "success" может быть передан обратно в ajax в шаблоне 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'])
...