Предотвращение дублирования при одном сканировании QR-кода в DJango

Текущая камера сканирует QR-код и отправляет одно и то же значение в view_nurse.py несколько раз, пока QR-код не удаляется от камеры. Это приводит к тому, что в моей базе данных появляется много повторяющихся значений, как показано на изображении ниже. Как предотвратить это?

В ситуациях, когда я сканирую другой QR-код, не перезапуская камеру, программа должна быть в состоянии определить, что это новый QR-код и ПОСТИТЬ результаты в файл views_nurse.py.

<nurse_home.html>

{% load static %}

{% block mainbody %}


<title>Django Online Barcode Reader</title>
<meta charset="utf-8">
 
{% csrf_token %}

<script src={% static "js/html5-qrcode.min.js" %}></script>
<style>
  .result{
    background-color: green;
    color:#fff;
    padding:20px;
  }
  .row{
    display:flex;
  }

</style>

<!--<form action="" method="POST">-->

{% csrf_token %}
<div class="row">
  <div class="col">
    <div style="width:500px;" id="reader"></div>
  </div>
  <div class="col" style="padding:30px;">
    <h4>Scanned Result</h4>
    <!--<div id="result" name="result">Result Here</div>-->
    <output type="POST" id="result" name="result" placeholder="qrCodeMessage">
      {% csrf_token %}
  </div>
</div>



<script type="text/javascript">

  // 1) Create a function to get the CSRF token
  function getCookie(name) {
    let cookie = document.cookie.match("(^|;) ?" + name + "=([^;]*)(;|$)");
    return cookie ? cookie[2] : null;
  }

  // 2) After generating the qrcode in the onScanSuccess callback, you invoke sendQrCode function with the qr code as argument
  function onScanSuccess(qrCodeMessage) {
    document.getElementById("result").innerHTML = '<span class="result">' + qrCodeMessage + "</span>";
    // Call the function here
    sendQrCode(qrCodeMessage);
  }

  //3) Fetch to send a POST request to nurse_qrscan route:
  async function sendQrCode(qrCode) {
    console.log(qrCode)
    const response = await fetch("/nurse_qrscan", {
      method: "POST",
      headers: {
        "X-CSRFToken": getCookie("csrftoken"),
      },
      body: JSON.stringify({
        result: qrCode,
      }),
    })
      .then((response) => response.json())
      .then((data) => {
        console.log(data)
        }
      );
    }

  function onScanError(errorMessage) {
    //handle scan error
  }

  var html5QrcodeScanner = new Html5QrcodeScanner("reader", {
    fps: 10,
    qrbox: 250,
  });
  html5QrcodeScanner.render(onScanSuccess, onScanError);

</script>

{% endblock %}

<view_nurse.py>

@api_view(['GET',"POST"])
# Nurse scans QR
def nurse_qrscan(request):
  if request.method == 'POST':
    # parse the JSON data
    data = json.load(request)
    result = data.get("result")
    
    if result != None:
      c = connection.cursor()
      # Saving the result to database, nurse_QR
      c.execute("INSERT INTO nurse_QR (output) VALUES ('{0}');".format(result))
      return Action.success()

<Изображение: Вывод, показанный в базе данных - Значения одного QR-кода повторяются несколько раз из POSTS>

enter image description here

Вернуться на верх