Перенаправление StreamingHttpResponse в Django
Я сталкиваюсь с проблемой отображения статуса в сканировании
это в основном сканирует QR купона и говорит, что купон действителен или нет Я сохранил статус каждого купона в базе данных вместе с идентификатором купона Я разобрался с частью сравнения и обновлением базы данных. Но Я не могу отобразить статус купона, т.е. погода купон действителен или нет
Ниже приведен код camera.html
{% include 'header.html' %}
<div class="w3-main" style="margin-left:300px;margin-top:60px;">
<div>
<img src="/cameraOn/">
{{print}}
kjhjvh
</div>
</div>
{% include 'footer.html' %}
Ниже приведен код views.py
def scan_qr(request):
return render(request, 'camera.html')
@gzip.gzip_page
def cameraView(request):
stat = False
cam = qr_scanner.VideoCamera()
return StreamingHttpResponse(gen(cam, stat), content_type = "multipart/x-mixed-replace;boundary=frame")
def gen(camera, stat):
while not stat:
frame, stat = camera.get_frame()
if stat:
yield b'--text \r\n' + b'Content-Type: text/plain\r\n\r\n' + b'Hello\r\n\r\n'
yield (b'--frame \r\n'
b'Content-Type: image/jpeg\r\n\r\n' + frame + b'\r\n\r\n')
Ниже приведен мой файл qr_scanner.py
import cv2
import threading
from pyzbar.pyzbar import decode
from services.models import Service
class VideoCamera(object):
thread_flag = True
scanned_otp = 'no_data'
def __init__(self):
self.video = cv2.VideoCapture(0)
_, self.frame = self.video.read()
self.qr_scanned = False
threading.Thread(target=self.update, args=()).start()
def release_camera(self):
self.video.release()
self.thread_flag = False
def get_frame(self):
img = self.frame
_, jpeg = cv2.imencode('.jpeg', img)
# Qr Scanning Start
self.qr_data = ''
for i in decode(img):
self.qr_data = i.data.decode('utf-8')
self.qr_scanned = True
cv2.waitKey(3)
# Qr Scanning ends
self.data_list = self.qr_data.split(',')
if self.qr_scanned and len(self.data_list) == 3:
self.scanned_otp = self.data_list[2]
self.check_qr(self.scanned_otp)
self.release_camera()
return jpeg.tobytes(), self.qr_scanned
def check_qr(self,otp):
service_db = Service.objects.filter(coupon_id = otp)
if service_db.exists() and service_db.first().status == False:
Service.objects.filter(coupon_id = otp).update(status = True)
print('Exists')
else:
print("not")
def update(self):
try:
while self.thread_flag:
_, self.frame = self.video.read()
except:
pass
Это мой первый раз, когда я занимаюсь проектом. И я очень новичок в мире кодинга а также хочу сказать, что я начал изучать django через этот проект
Так что любая помощь будет очень кстати
- Я пробовал отправлять метаданные и пытался их отобразить, но у меня не получалось обновлять метаданные каждый раз .
- Я пытался перенаправить файл, но это не сработало
- Я даже пытался использовать базу данных, но ошибка в том, что если несколько пользователей используют приложение одновременно, то будет большая несогласованность. Причина, по которой это важно, заключается в том, что мне нужно использовать этот проект для технического мероприятия в нашем колледже, чтобы управлять купоном, поэтому он очень важен.