Bagaimana saya bisa melewatkan Variabel dari flask) o HTML tanpa template render?

Saya baru menggunakan Flask dan saya baru saja mencoba meneruskan variabel ke halaman web. Saya tahu cara meneruskan variabel dalam metode render_template

tapi sekarang saya mencoba aplikasi streaming realtime. Ia menggunakan metode yang berbeda seperti .responses dan hasil

kode labu untuk streaming webcam diberikan di bawah ini

@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)

dan templatnya adalah

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

Sekarang saya perlu menambahkan label pada template saya seperti <label>{{ value }}</label>>

Saya telah menghitung nilai variabel dari labu dan saya dapat mencetaknya di konsol tetapi sekarang saya harus meneruskan nilai itu ke label pada templat yang sama yang mengalirkan video. tolong bantu


person Shahansha C    schedule 17.02.2020    source sumber
comment
tunggu jadi Anda ingin meneruskan variabel setelah halaman dimuat?   -  person DontBe3Greedy    schedule 17.02.2020
comment
ya saya harus meneruskan variabel setelah halaman dimuat mencoba membuat deteksi objek waktu nyata dari webcam jadi saya ingin mencetak kelas objek pada label bersama dengan streaming video   -  person Shahansha C    schedule 17.02.2020
comment
Setelah halaman dimuat, Anda perlu menggunakan javascript untuk melakukan pembaruan apa pun pada halaman tersebut. Javascript akan berkomunikasi dengan server secara berkala untuk memperbarui halaman.   -  person scotty3785    schedule 17.02.2020
comment
Maka perlu menggunakan java script dan ajax. Buat postingan ajax ke rute tersebut, lalu kirim datanya ke javascript ajax lalu gunakan javascript untuk memperbarui nilainya. Saya dapat membantu Anda dalam sepuluh menit, makan rn   -  person DontBe3Greedy    schedule 17.02.2020
comment
maaf jika saya mengajukan pertanyaan bodoh. halaman html terus memperbarui sumber bingkai gambar untuk menampilkan video, bukan? tanpa skrip apa pun, ia memperbarui sumber gambar? jadi tidak bisakah kita menggunakan metode itu?   -  person Shahansha C    schedule 17.02.2020
comment
Anda dapat menggunakan ini untuk itu. w3schools.com/html/html5_video.asp   -  person DontBe3Greedy    schedule 17.02.2020
comment
Saya tidak yakin bagaimana situs seperti youtube melakukannya. Anda dapat memeriksa halaman mereka untuk mencari tahu halaman kami   -  person DontBe3Greedy    schedule 17.02.2020
comment
saya perlu menggunakan webcam untuk streaming video realtime :(, kode di atas untuk video   -  person Shahansha C    schedule 17.02.2020
comment
sepertinya Anda mencoba melakukan hal yang sama di sini jadi mungkin ikuti dia   -  person Nullman    schedule 17.02.2020
comment
saya dapat melakukan streaming video di halaman web. saya mengikuti tautan di atas untuk itu. di atas hanya ada satu sumber gambar di web. saya ingin menambahkan label. saya dapat menghitung nilai di konsol dari aplikasi labu. tetapi saya perlu meneruskan nilai itu ke tag label di halaman templat   -  person Shahansha C    schedule 17.02.2020
comment
menambahkan label ke video? atau ke halaman web? bisakah Anda melewati tautan halaman? dan lingkari labelnya   -  person DontBe3Greedy    schedule 17.02.2020
comment
tidak, tidak ke video. ke halaman web yang menampilkan aliran video. {‹html› ‹head› ‹title›Demonstrasi Streaming Video‹/title›‹br› ‹/head›‹br› ‹body›‹br› ‹h1›Demonstrasi Streaming Video‹/h1› ‹img src={{ url_for ('calc') }}› ‹/body› ‹/html› } di sini hanya ada sumber gambar di halaman saya perlu menambahkan label dengan tag ‹label› dari html, label yang ditampilkan harus berupa nilai string yang saya lulus dari program flask. (seperti memberi nilai untuk img src di atas) maaf untuk bahasa Inggris saya yang buruk :(   -  person Shahansha C    schedule 17.02.2020


Jawaban (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();
}

FILE 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>

Maaf jika sulit dimengerti, saya sangat buruk dalam menjelaskan sesuatu, otak saya tidak terhubung secara normal

person DontBe3Greedy    schedule 17.02.2020
comment
Kontribusi pertama yang bagus. Jawaban Anda dapat ditingkatkan dengan menambahkan beberapa teks penjelasan. - person scotty3785; 17.02.2020
comment
@ DontBe3Greedy saya minta maaf saya tidak memiliki cukup pengetahuan tentang ini saya juga kesulitan menjelaskan pertanyaan saya sebenarnya saya mendapat solusi ketika kami menampilkan satu gambar di web dengan bantuan kode { return render_template(index3.html, user_imagesrc = full_filename ,user_labelsrc=userlabel)} tetapi ini tidak dapat digunakan ketika saya melakukan streaming webcam di halaman html alih-alih menampilkan satu gambar apa pun terima kasih atas kontribusi Anda, saya akan mencoba memahaminya - person Shahansha C; 17.02.2020
comment
jangan kembalikan templat. cukup tambahkan kode javascript, dan panggil kapan pun Anda perlu memperbarui halaman - person DontBe3Greedy; 17.02.2020
comment
@DontBe3Greedy di mana saya akan menempatkan tag label pada file html?? - person Shahansha C; 17.02.2020
comment
ya letakkan tag label di mana pun Anda inginkan di file html. berikan itu sebuah identitas - person DontBe3Greedy; 17.02.2020
comment
label tidak dimuat :( - person Shahansha C; 18.02.2020
comment
@ DontBe3Greedy halo terima kasih banyak Ini dimuat ketika POST diubah menjadi GET pada file skrip Tetapi saya menggunakan tombol untuk memanggil fungsi saya perlu mengubah nilai label secara dinamis tanpa acara klik apa pun jadi di mana saya akan memanggil fungsinya? apakah ada acara untuk label untuk tujuan ini? - person Shahansha C; 18.02.2020
comment
ok akhirnya mengerti :) saya menggunakan window.setInterval(change_label, 1000); untuk terus-menerus memanggil fungsi tetapi Browser menjadi lambat saat streaming :( mungkin karena mengakses beberapa konten fungsi dari flask, terima kasih banyak atas bantuan Anda - person Shahansha C; 18.02.2020