Генерация QR кода в Django

Генерация QR кода в Django

QR коды сейчас используются повсеместно, например для одного проекта понадобилась возможность генерации QR кода для каждой страницы сайта с ее адресом.

Ниже я на элементарном примере покажу как сделать генерацию QR кодов в Джанго.

Подготовительный этап

Создадим новое приложение для генерации qr кодов, назовем его qrgenerator:

python manage.py startapp qrgenerator

Дальше надо не забыть добавить приложение в INSTALLED_APPS в файле settings.py, а так же указать урл и папку для медиафайлов, чтобы мы могли сохранять сгенерированные qr коды:

INSTALLED_APPS = [
    
    ****
    'qrgenerator',
]

****

MEDIA_URL = '/media/'
MEDIA_ROOT = BASE_DIR.joinpath('media')

 Сразу же создадим в корне папку /media/qr

Дальше создадим в приложении, в папке /templates/qrgenerator/, заготовку HTML шаблона index.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Генератор QR кода</title>
</head>
<body>
<h1>Генератор QR кода</h1>
</body>
</html>

В файле views.py приложения qrgenerator добавим:

from django.shortcuts import render

def index(request):
    return render(request, 'qrgenerator/index.html')

В файле urls.py проекта добавим:

****

from django.conf.urls.static import static
from django.conf import settings
from qrgenerator.views import index as qr

urlpatterns = [
    
    ****
    path('qr/', qr, name='qr-generator'),
]

urlpatterns += static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)

Запустим тестовый сервер

python manage.py runserver

И проверим http://127.0.0.1:8000/qr/

Генерация QR кода на Django

Для герерации изображения qr кода нам понядобятся python библиотеки qrcode и Pillow, установим их:

pip install qrcode

pip install pillow

Подготовка закончена.

Генерируем QR код в Джанго

Создадим форму для ввода адреса сайта, добавим в шаблон /templates/qrgenerator/index.html:

<form method="post">
    {% csrf_token %}
    <h3>Введите адрес сайта</h3>
    <input type="text" name="data">
    <input type="submit" value="Получить QR код">
</form>

Сюда же, под форму, добавим вывод сгенерированного qr кода:

{% if qr_image %}
    <h4>Ваш QR код:</h4>
    <img src="/media/qr/test.png">
{% endif %}

Осталось изменить файл views.py проекта qrgenerator следующим образом:

from django.shortcuts import render
import qrcode


def index(request):
    qr_image = False
    if request.method == "POST":
        data = request.POST['data']
        img = qrcode.make(data)
        img.save("media/qr/test.png")
        qr_image = True

    return render(request, 'qrgenerator/index.html', {'qr_image': qr_image})

Теперь все готово, запускаем отладочный сервер:

python manage.py runserver

и можно перейти по адресу http://127.0.0.1:8000/qr/ и попробовать сненерировать qr код, я попробовал ввести адрес своего блога:

Работающий генератор QR кода на Джанго

Теперь в qr коде находится адрес моего блога, если попробовать его отсканировать то попадете на его главную страницу.

Хостинг для ваших проектов

Возможно, вас заинтересует

Декоратор @property в моделях Django

В этой короткой заметке я покажу как использовать декоратор @property в моделях …

Склонение слов во множественном числе в шаблонах Django

В заметке описывается как сделать собственный шаблонный фильтр Django для склонения русских …