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'),
]

 

posted @ 2024-07-02 20:21  笑而不语心自闲  阅读(75)  评论(0编辑  收藏  举报