我正在尝试使用以下代码在 Django 应用程序上使用 Python 制作二维码:
def generate_qr_code (reference):
qr = qrcode.QRCode(
version=1,
error_correction=qrcode.constants.ERROR_CORRECT_H,
box_size=10,
border=4,
)
qr.add_data(reference)
qr.make(fit=True)
img = qr.make_image(fill_color="black", back_color="white").convert('RGB')
filename = reference+".jpeg"
img.save("C:\\qrs\\"+filename)
现在,当我单击“生成二维码”按钮时,就会调用此函数。我的问题是,我希望二维码显示在浏览器的新选项卡上,而不是将其保存为图像,因为当时我只需要将它们打印在纸上,不需要保留图像.
谢谢您的帮助。
您可以使用SVG格式 导入二维码 导入 qrcode.image.svg 从 io 导入 BytesIO
def generate_qr_code (reference):
factory = qrcode.image.svg.SvgImage
qr_string = "sample text"
img = qrcode.make(qr_string, image_factory=factory, box_size=10)
stream = BytesIO()
img.save(stream)
context = {
'qrcode': stream.getvalue().decode()
}
return render(request, 'YOUR HTML.html', context)
然后你可以在html文件中使用它:
{{qrcode|safe}}
毕竟,我通过在 HTML 中使用这个简单的行来做到这一点:
<img id='barcode' src="https://api.qrserver.com/v1/create-qr-code/?data={{ref}}" alt="" title="{{ref}}" width="150" height="150"/>
您可以通过单击 Django 模板中的链接并使用以下代码来创建并在新选项卡中显示二维码:
# "my_app1/views.py"
from django.shortcuts import render
import qrcode
from io import BytesIO
from base64 import b64encode
def index(request):
return render(request, 'index.html')
def generate_qr_code(request):
qr_code_img = qrcode.make("https://www.google.com/")
buffer = BytesIO()
qr_code_img.save(buffer)
buffer.seek(0)
encoded_img = b64encode(buffer.read()).decode()
qr_code_data = f'data:image/png;base64,{encoded_img}'
return render(request, 'qr_code.html', {'qr_code_data': qr_code_data})
# "my_app1/urls.py"
from django.urls import path
from . import views
app_name = "my_app1"
urlpatterns = [
path('', views.index, name="index"),
path('generate_qr_code/', views.generate_qr_code, name="generate-qr-code")
]
# "core/urls.py"
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('my_app1/', include('my_app1.urls'))
]
{% "templates/index.html" %}
<a href="{% url 'my_app1:generate-qr-code' %}" target="_blank">
Generate Qr Code
</a>
{% "templates/qr_code.html" %}
<img src="{{ qr_code_data }}" />