Обновление страницы без перезагрузки с помощью Django
Я делаю систему для определения присутствия по QR-коду с помощью Django, и мне нужен способ отображения изображения и текста при обнаружении QR-кода без необходимости перезагрузки страницы, я видел кое-что о HTMX, но не смог многого с ним сделать. В интернете не так много информации об использовании оператора if для этого.
views.py
HTML шаблон
{% extends '../base.html' %}
{% load static %}
{% block content %}
<div class="row">
<hr />
<div class="col-md-10 mx-auto">
<form method="POST" enctype="multipart/form-data">
{% csrf_token %}
<div class="form-group row">
<div class="col-sm-5">
<label for="typeOfBarcode">Estilo</label>
<select class="form-control" id="typeOfBarcode" name="typeOfBarcode">
{% for barcode_type in barcode_types %}
<option>{{ barcode_type }}</option>
{% endfor %}
</select>
</div>
<div class="col-sm-5">
<label for="typeOfClass">Turma</label>
<select class="form-control" id="typeOfClass" name="typeOfClass">
{% for turma in turmas %}
<option>{{ turma }}</option>
{% endfor %}
</select>
</div>
<div class="col-sm-3">
<label for="barcodeData">CPF </label>
<input type="search" id="barcodeData" name="barcodeData" class="form-control input" onfocus="this.value=''" required />
</div>
<div class="col-sm-5">
<label>Nome </label>
<input type="text" id="Name" name="Name" class="form-control input" onfocus="this.value=''" required />
</div>
<div>
<input type="file" name="Picture" required>
</div>
<div class="col-sm-2">
<label for="btnGenerate">Click to generate</label>
<button type="submit" id="btnGenerate" class="form-control btn btn-primary">Generate Barcode</button>
</div>
</div>
</form>
</div>
</div>
{% endblock content %}
(Извините за мой плохой английский, я использовал tradutor)
Ваш лучший вариант, вероятно, рассмотреть POST формы, используя Ajax
+Javascirpt/JQuery
, Это позволит вам отправлять форму и обновлять ее.
Я не уверен на 100%, как вы вернете изображение в Ajax.
Я уже работал со штрих-кодами, и то, что я делал, это создавал их в папке static/barcodes/encoded_barcode_text.png
, затем передавал их с помощью тега изображения, используя URL. Затем вы можете запустить Cron/Scheduled Task для очистки этого каталога в определенный момент
вы можете использовать django channels для создания асинхронного соединения с сервером с помощью встроенной библиотеки javascript websocket Вы можете прочитать больше в этой документации для базового использования каналов django