基于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