আমাদের ওয়েবসাইটে কখনো কখনো URL-এর QR কোড জেনারেট করার প্রয়োজন পড়ে। QR কোড যাচাই, ওয়েবসাইট লগইন, ওয়েবসাইট খোলা এবং এরকম অনেক কাজে স্ক্যান করা হয়। এই আর্টিকেলে, আমরা দেখব কিভাবে এটিকে ইমপ্লিমেন্ট করতে হয়। আমরা ডজ্যাঙ্গোতে একটি qrgenerator ওয়েবসাইট তৈরি করব।
উদাহরণ
একটি ডজ্যাঙ্গো প্রজেক্ট এবং একটি অ্যাপ তৈরি করুন। প্রজেক্ট এবং অ্যাপের সমান লেভেলে একটি 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 এবং media ফোল্ডারের 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 মেথড সংজ্ঞায়িত করেছি, যা আর্গুমেন্ট নেয়। আমরা qrcode লাইব্রেরি ব্যবহার করে QR কোড জেনারেট করেছি এবং তারপর ক্যানভাস ব্যবহার করে এটিকে ব্ল্যাক অ্যান্ড হোয়াইট করে ফেলেছি। তারপর আমরা সেই QR কোডকে ক্যানভাসের ওপর যোগ করেছি এবং ইমেজ হিসেবে সেভ করেছি। আমরা ইমেজটি মিডিয়া ফোল্ডারে সেভ করেছি এবং মডেল ইনস্ট্যান্স হিসেবে যোগ করেছি।
এখন, সব কিছু সেট। আপনি আউটপুট চেক করতে পারেন।
আউটপুট
