Django 在网页上生成二维码
1.安装包
pip install django-qr-code
2.在django项目的settings.py中,安装app
打开项目的settings.py,找到INSTALLED_APPS ,在这里增加一条'qr_code'
INSTALLED_APPS = [
...,
'rest_framework',
'qr_code',
...
]
3.在渲染的html文件中,导入模板
{% load qr_code %}
ps:如果html用到了继承,这句话一定要放到继承下面
{% extends 'base.html' %}
{% load qr_code %}
4.在html文件中,导入一个标签
渲染出来是svg标签:{% qr_from_text "Hello World!" size="T" %}
渲染出来是img标签:{% qr_from_text "Hello World!" size="m" image_format="png" error_correction="L" %
5.效果
方法2:
无须安装 django-qr-code 包
在你的 views.py
中创建一个生成二维码的视图:
# myapp/views.py
import qrcode
from io import BytesIO
from django.http import HttpResponse
from django.shortcuts import render
def generate_qr_code(request):
# 要生成二维码的数据
data = "https://www.baidu.com"
# 生成二维码
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")
buffer.seek(0)
# 返回二维码图像
return HttpResponse(buffer, content_type="image/png")
设置 URL 路由
在你的 urls.py
中配置相应的路由:
# myproject/urls.py
from django.contrib import admin
from django.urls import path
from myapp import views
urlpatterns = [
path('admin/', admin.site.urls),
path('qr_code/', views.generate_qr_code, name='qr_code'),
]
在模板中显示二维码
创建一个模板,在其中显示二维码:
<!-- myapp/templates/myapp/show_qr_code.html -->
<!DOCTYPE html>
<html>
<head>
<title>QR Code</title>
</head>
<body>
<h1>Your QR Code:</h1>
<img src="{% url 'qr_code' %}" alt="QR Code">
</body>
</html>
然后在视图中渲染这个模板:
# myapp/views.py
from django.shortcuts import render
def show_qr_code(request):
return render(request, 'myapp/show_qr_code.html')
设置模板 URL
在你的 urls.py
中添加模板视图的路由:
# myproject/urls.py
urlpatterns = [
path('admin/', admin.site.urls),
path('qr_code/', views.generate_qr_code, name='qr_code'),
path('show_qr_code/', views.show_qr_code, name='show_qr_code'),
]