हमें कभी-कभी अपनी वेबसाइट में किसी URL का QR कोड जनरेट करने की आवश्यकता होती है। QR कोड सत्यापन, वेबसाइट लॉगिन, वेबसाइट खोलने और ऐसी कई चीजों के लिए स्कैन किए जाते हैं। इस लेख में, हम देखेंगे कि इसे कैसे लागू किया जाए। हम Django में एक qrgenerator वेबसाइट बनाने जा रहे हैं।
उदाहरण
एक Django प्रोजेक्ट और एक ऐप बनाएं। प्रोजेक्ट और ऐप के समान लेवल पर एक media फोल्डर बनाएं।
प्रोजेक्ट फोल्डर में settings.py पर जाएं और INSTALLED_APPS में ऐप का नाम जोड़ें और नीचे यह जोड़ें:
MEDIA_ROOT = os.path.join(BASE_DIR, 'media/') MEDIA_URL = '/media/'
यहां हमने अपना media फोल्डर सेट किया जहां हम अपना QR कोड स्टोर करेंगे।
प्रोजेक्ट डायरेक्टरी के urls.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)
यहां हमने ऐप urls और मीडिया फोल्डर url परिभाषित किए। qrgenerator मेरा ऐप नाम है।
अब दो लाइब्रेरी इंस्टॉल करें: PIL और qrcode।
pip install PIL pip install qrcode
ऐप के urls.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
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 कोड लौटाए।
ऐप डायरेक्टरी में एक "templates" फोल्डर बनाएं (माइग्रेशन फोल्डर के समान लेवल पर) और इसमें "home.html" फाइल जोड़ें:
<!DOCTYPE html>
<html>
<head>
<title>tut</title>
</head>
<body>
<form method="POST">
{% csrf_token %}
<input type="url" placeholder="URL PLEASE" required name="url">
<button type="submit">get qrcode</button>
</form>
{% for qr in qr_code %}
<img src="{{qr.image.url}}" /><br>
{% endfor %}
</body>
</html>
यहां हमने URL लेने के लिए एक इनपुट बॉक्स बनाया और इसे बैकएंड भेजा। <form> के नीचे, हम प्रत्येक 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
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)
यहां हमने अपनी खुद की save मेथड परिभाषित की, जो आर्गुमेंट्स लेती है। हमने QR कोड जनरेट करने के लिए qrcode लाइब्रेरी का उपयोग किया और फिर इसे ब्लैक एंड व्हाइट बनाने के लिए कैनवास का उपयोग किया। फिर हमने उस QR कोड को कैनवास पर जोड़ा और इसे इमेज के रूप में सेव किया। हमने इमेज को मीडिया फोल्डर में सेव किया और इसे मॉडल इंस्टेंस के रूप में जोड़ा।
अब, सब कुछ सेट है और आप आउटपुट जांचने के लिए आगे बढ़ सकते हैं।
आउटपुट
