基於Django的二維碼生成網站
有時我們需要在網站上生成URL的二維碼。二維碼用於驗證、網站登入、開啟網站等等。在本文中,我們將學習如何實現這一點。我們將建立一個基於Django的**qrgenerator**網站。
示例
建立一個Django專案和一個應用。在專案和應用的同一級別建立一個**media**資料夾。
進入專案資料夾中的**settings.py**,在INSTALLED_APPS中新增應用名稱,並在底部新增以下內容:
MEDIA_ROOT = os.path.join(BASE_DIR, 'media/') MEDIA_URL = '/media/'
在這裡,我們設定了**media**資料夾,我們將在這裡儲存我們的二維碼。
在專案目錄的**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)在這裡,我們定義了應用URL和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上。
在**views.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處理程式中,我們返回所有二維碼。
在應用目錄(與遷移資料夾同一級別)中建立一個**"templates"**資料夾,並在其中新增一個名為**"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並將其傳送到後端。在**<form>**下方,我們迴圈遍歷每個二維碼物件並將它們顯示為影像。
進入**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)在這裡,我們定義了自己的save方法,它接受引數。我們使用**qrcode**庫生成二維碼,然後使用畫布將其製作成黑白的。然後我們將二維碼新增到畫布上並將其儲存為影像。我們將影像儲存在media資料夾中並將其新增到模型例項中。
現在,一切都已設定好,您可以繼續檢查輸出。
輸出

資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP