당사 웹사이트에서 URL의 QR 코드를 생성해야 하는 경우가 있습니다. QR 코드는 확인, 웹사이트 로그인, 웹사이트 열기 등을 위해 스캔됩니다. 이 기사에서는 이를 구현하는 방법을 살펴보겠습니다. qrgenerator를 만들 것입니다. Django의 웹사이트
예시
Django 프로젝트와 앱을 만듭니다. 미디어 만들기 프로젝트 및 앱의 동일한 수준에 있는 폴더입니다.
settings.py로 이동합니다. 프로젝트 폴더에서 INSTALLED_APPS에 앱 이름을 추가하고 하단에 추가 -
MEDIA_ROOT = os.path.join(BASE_DIR, 'media/') MEDIA_URL = '/media/'
여기에서 미디어를 설정합니다. QR 코드를 저장할 폴더입니다.
url.py에서 프로젝트 디렉토리의 다음을 추가하십시오 -
from django.contrib import admin from django.urls import path,include from django.conf.urls.static import static from django.conf import settings urlpatterns = [ path('admin/', admin.site.urls), path("",include("qrgenerator.urls")) ] urlpatterns += static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)
여기에서 앱 URL과 미디어 폴더 URL을 정의했습니다. qrgenerator 내 앱 이름입니다.
이제 두 개의 라이브러리를 설치하십시오. PIL qrcode .
pip install PIL pip install qrcode
앱의 url.py에서 -
from django.urls import path,include from . import views urlpatterns = [ path('', views.home,name='Home'), ]
여기에서 메인 URL에 홈 뷰를 렌더링했습니다.
view.py에서 다음 줄을 추가하십시오 -
from django.shortcuts import render from .models import QrCode # Create your views here. def home(request): if request.method=="POST": Url=request.POST['url'] QrCode.objects.create(url=Url) qr_code=QrCode.objects.all() return render(request,"home.html",{'qr_code':qr_code})
여기에서 URL을 가져온 다음 qrcode를 만들었습니다. 모델의 객체와 GET 핸들러에서 모든 QR 코드를 반환했습니다.
"템플릿" 만들기 앱 디렉토리의 폴더(마이그레이션 폴더와 동일한 수준)에 "home.html" 파일을 추가합니다. 다음 줄과 함께 -
<!DOCTYPE html> <html> <head> <title>tut</title> </head> <body> <form method="POST"> {% csrf_token %} <input type="url" placeholder="URL PLEASE" requir ed name="url"> <button type= "submit" >get qrcode</button> </form> {% for qr in qr_code %} <img src="{{qr.image.url}}"/><br> {%endfor%} </body> </html>
여기에서 URL을 가져와 백엔드로 보내기 위한 입력 상자를 만들었습니다. 아래 , 각 QR 코드 개체를 반복하여 이미지로 표시합니다.
models.py로 이동 다음 줄을 추가하십시오 -
from django.db import models import qrcode from PIL import Image, ImageDraw from io import BytesIO from django.core.files import File # Create your models here. import random class QrCode(models.Model): url=models.URLField() image=models.ImageField(upload_to='qrcode',blank=True) def save(self,*args,**kwargs): qrcode_img=qrcode.make(self.url) canvas=Image.new("RGB", (300,300),"white") draw=ImageDraw.Draw(canvas) canvas.paste(qrcode_img) buffer=BytesIO() canvas.save(buffer,"PNG") self.image.save(f'image{random.randint(0,9999)}',File(buffer),save=False) canvas.close() super().save(*args,**kwargs)
여기에서 인수를 사용하는 자체 저장 메서드를 정의했습니다. qrcode를 사용했습니다. 라이브러리에서 QR 코드를 생성한 다음 캔버스를 사용하여 흑백으로 만들었습니다. 그런 다음 캔버스 위에 해당 QR 코드를 추가하고 이미지로 저장했습니다. 미디어 폴더에 이미지를 저장하고 모델 인스턴스로 추가했습니다.
이제 모든 것이 설정되었으며 출력을 확인할 수 있습니다.
출력