Как я могу передать переменную из фляги) или HTML без шаблона рендеринга?

Я новичок в использовании Flask и только что пытался передать переменную на веб-страницы. Я знаю, как передать переменную в методе render_template

но теперь я пробую потоковое приложение в реальном времени. Он использует различные методы, такие как .responses и yields.

код фляги для потоковой передачи веб-камеры приведен ниже

@app.route('/')
def index():
    return render_template('index.html')

def get_frame():
    video=cv2.VideoCapture(0) #this makes a web cam object

while True:
    ret, frame = video.read()
    imgencode=cv2.imencode('.jpg',im)[1]
    stringData=imgencode.tostring()
    yield (b'--frame\r\n'
        b'Content-Type: text/plain\r\n\r\n'+stringData+b'\r\n')

del(video)

@app.route('/calc')
def calc():
return Response(get_frame(),mimetype='multipart/x-mixed-replace; boundary=frame')


if __name__ == '__main__':
app.run(host='localhost', debug=True, threaded=True)

и шаблон

 <html>
 <head>
 <title>Video Streaming Demonstration</title>
 </head>
 <body>
 <h1>Video Streaming Demonstration</h1>
 <img src="{{ url_for('calc') }}">
 </body>
 </html>

Теперь мне нужно добавить метку в мой шаблон, например <label>{{ value }}</label>>

Я вычислил значение переменной из flask и могу распечатать его на консоли, но теперь мне нужно передать это значение метке в том же шаблоне, который транслирует видео. пожалуйста помоги


person Shahansha C    schedule 17.02.2020    source источник
comment
подождите, вы хотите передать переменную после загрузки страницы?   -  person DontBe3Greedy    schedule 17.02.2020
comment
да, мне нужно передать переменную после загрузки страницы, пытаясь создать обнаружение объекта в реальном времени с веб-камеры, поэтому я хотел бы напечатать класс объекта на этикетке вместе с потоковым видео   -  person Shahansha C    schedule 17.02.2020
comment
После загрузки страницы вам нужно будет использовать javascript для выполнения любых обновлений страницы. JavaScript будет периодически связываться с сервером для обновления страницы.   -  person scotty3785    schedule 17.02.2020
comment
Затем нужно использовать java-скрипт и ajax. Сделайте сообщение ajax для маршрута, затем отправьте данные на javascript ajax, затем используйте javascript для обновления значения. Я могу помочь вам с этим за десять минут, съев rn   -  person DontBe3Greedy    schedule 17.02.2020
comment
извините, если задаю глупый вопрос. HTML-страница постоянно обновляет источник кадра изображения для отображения видео, верно? без каких-либо скриптов он обновляет источник изображения? так мы не можем использовать этот метод?   -  person Shahansha C    schedule 17.02.2020
comment
Вы можете использовать это для этого. w3schools.com/html/html5_video.asp   -  person DontBe3Greedy    schedule 17.02.2020
comment
Я не уверен, как это делают такие сайты, как YouTube. Вы можете проверить их страницу, чтобы понять, что это наша   -  person DontBe3Greedy    schedule 17.02.2020
comment
мне нужно использовать веб-камеру для потоковой передачи видео в реальном времени :(, приведенный выше код предназначен для видео   -  person Shahansha C    schedule 17.02.2020
comment
похоже, вы пытаетесь сделать то же самое, что и здесь, так что, возможно, подпишитесь вместе с ним   -  person Nullman    schedule 17.02.2020
comment
я могу транслировать видео на веб-странице. Я следую приведенной выше ссылке для этого. на приведенном выше есть только один источник изображения в Интернете. Я хотел бы добавить ярлык. я могу рассчитать значение на консоли из приложения фляги. но мне нужно передать это значение тегу метки на странице шаблона   -  person Shahansha C    schedule 17.02.2020
comment
добавить ярлык к видео? или на веб-страницу? можно пройти по ссылке страницы? и обведите метку   -  person DontBe3Greedy    schedule 17.02.2020
comment
нет не к видео. на веб-страницу, на которой отображается видеопоток. {‹html› ‹head› ‹title›Демонстрация потокового видео‹/title›‹br› ‹/head›‹br› ‹body›‹br› ‹h1›Демонстрация потокового видео‹/h1› ‹img src={{ url_for ('calc') }}› ‹/body› ‹/html› } здесь есть только источник изображения на странице, мне нужно добавить метку с тегом ‹label› html отображаемая метка должна быть строковым значением, которое я перешел из программы фляги. (точно так же, как указание значения для img src выше) извините за мой плохой английский :(   -  person Shahansha C    schedule 17.02.2020


Ответы (1)


FLASK APP.py

#This route accepts request against the url http://domain_name/change_label
#You could add the argument, method=["POST"],<br>So the route only accepts post request against that url.
@app.route("/change_label")
def change_label():
    #Return the text you want the label to be
    return "New Label"

JAVASCRIPT_FILE

function change_label(){
//Create xhttp object
var xhttp = new XMLHttpRequest();
//Listen for the response of your xhttp object
xhttp.onreadystatechange = function() {
  if (this.readyState == 4 && this.status == 200) {
    //If the request is 200 aka succesfull, set the text of the label to the response text of the xhttp request
    document.getElementById("Id of the label").innerHTML =
    this.responseText;
  }
};
//Open a post request with the xhttp object. 
xhttp.open("POST", "http://domain/change_label", true);
// Send the post request
xhttp.send();
}

HTML-ФАЙЛ

 <html>
 <head>
 <title>Video Streaming Demonstration</title>
 <script src="link_to_javascript"></script>
 </head>
 <body>
 <h1>Video Streaming Demonstration</h1>
 <img src="{{ url_for('calc') }}">
 </body>
 </html>

Извините, если это трудно понять, я очень плохо объясняю, мой мозг просто не подключен нормально.

person DontBe3Greedy    schedule 17.02.2020
comment
Хороший первый вклад. Ваш ответ можно улучшить, добавив поясняющий текст. - person scotty3785; 17.02.2020
comment
@DontBe3Greedy, извините, у меня недостаточно знаний об этом, у меня также есть проблемы с объяснением моего вопроса, на самом деле я получил решение, когда мы отображаем одно изображение в Интернете с помощью кода { return render_template (index3.html, user_imagesrc = full_filename ,user_labelsrc=userlabel)} но это не может использоваться, когда я транслирую веб-камеру на html-странице вместо отображения одного изображения в любом случае, спасибо за ваш вклад, я постараюсь понять это - person Shahansha C; 17.02.2020
comment
не возвращайте шаблон. просто добавьте код javascript и вызывайте его всякий раз, когда вам нужно обновить страницу - person DontBe3Greedy; 17.02.2020
comment
@DontBe3Greedy, где мне разместить тег метки в html-файле ?? - person Shahansha C; 17.02.2020
comment
да, поместите тег label в любое место в html-файле. дайте ему идентификатор - person DontBe3Greedy; 17.02.2020
comment
ярлык не загружается :( - person Shahansha C; 18.02.2020
comment
@DontBe3Greedy привет, большое спасибо. Он загружается, когда POST изменяется на GET в файле сценария. Но я использовал кнопку для вызова функции, мне нужно динамически изменить значение метки без какого-либо события щелчка, так где я буду вызывать функцию? есть ли какое-либо событие для ярлыка для этой цели? - person Shahansha C; 18.02.2020
comment
хорошо, наконец понял :) я использовал window.setInterval(change_label, 1000); за непрерывный вызов функции, но браузер замедляется при потоковой передаче :( может быть из-за доступа к содержимому нескольких функций из фляги, большое спасибо за вашу помощь - person Shahansha C; 18.02.2020