Computer >> Máy Tính >  >> Lập trình >> Python

Trang web tạo mã QR ở Django

Đôi khi chúng tôi cần tạo mã QR của một URL trong trang web của mình. Mã QR được quét để xác minh, đăng nhập trang web, mở trang web và nhiều thứ tương tự. Trong bài viết này, chúng ta sẽ xem cách thực hiện điều đó. Chúng tôi sẽ tạo qrgenerator trang web ở Django.

Ví dụ

Tạo một dự án Django và một ứng dụng. Tạo phương tiện ở cùng cấp của dự án và ứng dụng.

Đi tới settings.py trong thư mục dự án và thêm tên ứng dụng trong INSTALLED_APPS và thêm tên này ở cuối -

MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')
MEDIA_URL = '/media/'

Tại đây, chúng tôi thiết lập phương tiện của mình thư mục nơi chúng tôi sẽ lưu mã QR của mình.

Trong urls.py của thư mục dự án, thêm phần sau -

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)

Ở đây chúng tôi đã xác định url ứng dụng và url thư mục phương tiện. qrgenerator là tên ứng dụng của tôi.

Bây giờ hãy cài đặt hai thư viện: PIL một qrcode .

pip install PIL
pip install qrcode

Trong urls.py của ứng dụng -

from django.urls import path,include
from . import views

urlpatterns = [
   path('', views.home,name='Home'),
]

Tại đây, chúng tôi đã hiển thị chế độ xem trang chủ của mình trên url chính.

Trong view.py, thêm các dòng sau -

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})

Tại đây, chúng tôi đã lấy url và sau đó tạo qrcode đối tượng của mô hình và trong trình xử lý GET, chúng tôi đã trả lại tất cả các mã QR của mình.

Tạo "mẫu" thư mục trong thư mục ứng dụng (ở cùng cấp của thư mục di chuyển) và thêm tệp "home.html" trong đó có các dòng sau -

<!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>

Ở đây chúng tôi đã tạo một hộp nhập liệu để lấy url và gửi nó đến phần phụ trợ. Bên dưới

, chúng tôi lặp lại từng đối tượng mã QR và hiển thị chúng dưới dạng hình ảnh.

Truy cập models.py và thêm các dòng sau -

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)

Ở đây chúng tôi đã xác định phương thức lưu của riêng mình, phương thức này nhận đối số. Chúng tôi đã sử dụng qrcode thư viện để tạo mã QR và sau đó chúng tôi sử dụng canvas để làm cho nó có màu đen và trắng. Sau đó, chúng tôi thêm mã QR đó lên canvas và lưu nó dưới dạng hình ảnh. Chúng tôi đã lưu hình ảnh trong thư mục media và thêm nó làm ví dụ mô hình.

Bây giờ, mọi thứ đã được thiết lập và bạn có thể tiến hành kiểm tra kết quả đầu ra.

Đầu ra

Trang web tạo mã QR ở Django