Вызовите другой маршрут для получения данных

#flask #flask-sqlalchemy

#flask #flask-sqlalchemy

Вопрос:

Мое приложение flask определяет следующий маршрут:

 @app.route('/logs', methods=['GET', 'POST'])
def log_collection():
    if (request.method == 'GET'):
    
        query = db.session.query(LogData)

        return jsonify([log.to_dict() for logs in query.all()])
  

Затем я определил второй маршрут:

 @app.route('/display_logs')
def logs():
    # Call /logs endpoint to get data
    return render_template('display_logs.html', data = logs)
  

Есть ли способ в Flask вызвать конечную точку / logs из /display_logs и получить все данные?

Ответ №1:

Я нахожу этот очиститель:

 def fetch_logs():
    query = db.session.query(LogData)
    return [_log.to_dict() for _log in query.all()]

@app.route('/logs_ajax', methods=['GET', 'POST'])
def logs_ajax():
    if (request.method == 'GET'):
        return jsonify(fetch_logs())


@app.route('/logs_view')
def logs_view():
    return render_template('display_logs.html', data = fetch_logs())
  

Ответ №2:

Вы можете напрямую вызвать метод log_collection() внутри logs() метода

 @app.route('/display_logs')
def logs():
    logs = log_collection()
    return render_template('display_logs.html', data = logs)
  

Ответ №3:

 You can call the log_collection function in a variable under /display_logs endpoint which it will return the data fetched under /logs

@app.route('/logs', methods=['GET', 'POST'])
def log_collection():
    if (request.method == 'GET'):
    
        query = db.session.query(LogData)

        return jsonify([log.to_dict() for logs in query.all()])

@app.route('/display_logs')
def logs():
    fetchLog = log_collection()
    return render_template('display_logs.html', data = fetchLog)