Django 是一个流行的 Python Web 框架,用于构建 Web 应用程序。生成二维码可以通过多种方式实现,下面我将介绍两种常用的方式:使用第三方库和使用 Django 内置的视图。
步骤流程:
安装 qrcode 库:在你的 Django 项目环境中安装 qrcode 库。
pip install qrcode
在 Django 应用中创建一个视图函数来生成二维码。
# 在 views.py 中
import qrcode
from django.http import HttpResponse
from io import BytesIO
def generate_qrcode(request, data):
qr = qrcode.QRCode(
version=1,
error_correction=qrcode.constants.ERROR_CORRECT_L,
box_size=10,
border=4,
)
qr.add_data(data)
qr.make(fit=True)
img = qr.make_image(fill_color="black", back_color="white")
buffer = BytesIO()
img.save(buffer, format="PNG")
return HttpResponse(buffer.getvalue(), content_type="image/png")
在 urls.py 中设置路由,将该视图函数与 URL 映射起来。
from django.urls import path
from . import views
urlpatterns = [
path('qrcode/<str:data>/', views.generate_qrcode, name='generate_qrcode'),
]
在模板中使用生成的二维码。
<!-- 在模板中,比如一个 HTML 文件 -->
<img src="{% url 'generate_qrcode' data='https://www.example.com' %}" alt="QR Code">
这个例子中,当用户访问 /qrcode/https://www.example.com/
时,会生成一个包含 https://www.example.com
的二维码并显示在浏览器中。
Django 内置了一个 django.views.generic.base.View
类,你可以继承它来创建自定义视图。
步骤流程:
# 在 views.py 中
import qrcode
from django.views.generic.base import View
from django.http import HttpResponse
from io import BytesIO
class QRCodeView(View):
def get(self, request, *args, **kwargs):
data = self.kwargs.get('data')
qr = qrcode.QRCode(
version=1,
error_correction=qrcode.constants.ERROR_CORRECT_L,
box_size=10,
border=4,
)
qr.add_data(data)
qr.make(fit=True)
img = qr.make_image(fill_color="black", back_color="white")
buffer = BytesIO()
img.save(buffer, format="PNG")
return HttpResponse(buffer.getvalue(), content_type="image/png")
在 urls.py 中设置路由,将该视图类与 URL 映射起来。
from django.urls import path
from .views import QRCodeView
urlpatterns = [
path('qrcode/<str:data>/', QRCodeView.as_view(), name='generate_qrcode'),
]
在模板中使用生成的二维码,与方式一中的示例代码相同。
无论你选择哪种方式,都可以根据需要进行适当的定制和调整。这些例子仅供参考,你可以根据实际情况进行修改和扩展。