django - поток внутри шаблона - PullRequest
1 голос
/ 03 апреля 2020

У меня есть кнопка «Начать камеру» на моей странице указателя. Если щелкнуть по нему, мне нужно показать канал веб-камеры на той же странице (индекс) и определить лица из видео. «Stop Camera» должна остановить веб-камеру.

$(function() {
    $('.start-camera').on("click", function(e){
        $(".item-container").html('<img src="/video_feed">');
    })
})

urls.py

urlpatterns = [
    url(r"^$", views.index, name="index"),
    url(r'^admin/', admin.site.urls),
    url(r'^video_feed/', views.video_feed, name="video_feed"),
]

views.py

def index(request):
return render(request, "web_app/index.html")


def video_feed(request):
    return HttpResponse(gen(VideoCamera()), content_type='multipart/x-mixed-replace; boundary=frame')

Я не упоминаю сценарии python, которые содержат код OpenCV. Эта часть работает правильно. Проблема, с которой я сталкиваюсь:
«video_feed» будет продолжать обслуживать HttpResponse до тех пор, пока не будет нажата «Stop Camera» и не будет удален [img src = "/ video_feed»] из DOM. Но я не могу найти путь назад к index. html и фактически увидеть канал веб-камеры.

Если бы я мог загрузить HttpResponse внутри индекса. html страница, тогда моя проблема будет решена. Но у меня ограниченный опыт работы с Django и я не могу разобраться с этим.

В Flask я могу просто сделать это:

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

Это сопоставление URL не возвращается представление, но загружает только ответ в текущем индексе. html страница. В Django, когда я регистрирую URL, я также должен определить представление. Могу ли я вызвать video_feed () как функцию из index. html (а не как представление)? Есть ли способ получить канал (непрерывный HttpResponse), не выходя из индекса. html? Можно ли как-то объяснить проблему? Любая помощь будет в значительной степени оценена.

...