django生成链接二维码,用户扫码之后跳转到指定链接(生成的二维码图片转成了base64,前端收到之后需要转成图片即可):
import qrcode, base64
from io import BytesIO
from django.http import HttpResponse
class LinkCodeAPIView(APIView):
"""链接二维码"""
def get(self, request):
status_http = 'http://'
end_info = '/#/apprentice'
domain_name = request.get_host()
if domain_name != '本项目域名':
status_http = 'https://'
# 拼接二维码链接
link_url = status_http + domain_name + end_info
# 生成二维码
qr_img = qrcode.make(link_url)
byte_io = BytesIO()
qr_img.save(byte_io, 'PNG')
byte_io.seek(0)
base64_data = base64.b64encode(byte_io.getvalue())
# 直接生成二维码图片返回给前端
# qr_img = qrcode.make(link_url)
# byte_io = BytesIO()
# qr_img.save(byte_io)
# image = byte_io.getvalue()
# return HttpResponse(image, content_type="image/png")
return APIResponse.success(data=base64_data, message='OK')
返回结果:
{
“data”: “iVBORw0KGgoAAAANSUhEUgAAAXIAAAFyAQAAAADAX2ykAAACmklEQVR4nO2bQW7bMBBF35QCspQAH8BHoW/QIxU9Um4gHiUHCCAuDVD4XZCynQBtmlZWLGBmIVPyW3xgMBT5hzLxmUjfPoWD884777zzzjv/O95adNgptwvUy/LfaUM9zq/Fd/UnjgD5gNKAKQ0BgwAQCgC2jR7n78PnVqHLZTaN/bkm1cy6rfU4fx9eYy8BQZCfZKcv1uP8HXiNfYE4gcZH0OP8P/PLxNsLyGD0c0d86QrpFLD4DLcWyKPpd/7P0fKb6ps2QHx+kgFYnA4As22px/l1+Zrfa4UqDRj0ZxMUWmFvp8f5dXkkScQpSJpAmoIkFdptHQURJWl8NP3OfxA1v/QF6EtdWtX1FZdFllTw/O6SX+pXkkaCoO6PgLgUMeD1u3d+tlawL2Z1kh4JIh2lmulxWz3Or8J316FBV0QOxeJ4NrVnVldfVi3MR9Pv/F/xaQCizgbMppFmUhIngGz2lr+3HufX5atXlZ9kNgTd9o/6Qp2kN9Xj/Er8ZX4OIn0vKH2foHaNcihGHrA4XbbIj6bf+T/H4m/kQyG+GCIbzd/oa2cQpWHy9++u+TRA2wQTaqmaDRdr0t+/e+Vr/Rr9a+v1RgFpeEUwo3RUfeb9/V3y1d+oMfZ6Y1JO0IzLK/Jo+p3/IBZ/UrrxIoFqSLZhX/D87pK/rd/WaeDiPzfjEvcnd85fz0+SjpL9mC5HN3JXnehN9Ti/Fn/bX7i4ztfzOa1+fX7eO7+cnyROYKdlk0QyW0zKTfU4fyc+Hc+mkdn081hujlPa6Wv0OP9ffPfu3uKEDDqI04zRA+RhKz3Or8u/Pz8p8qEI5g7yQRafrZocG+lx/i58MjOzAezUF9qXSG/Advug+p3/TZh/3+28884777zzm/O/AAfsiX0F6aUeAAAAAElFTkSuQmCC”,
“code”: 0,
“message”: “OK”
}