首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Django创建二维码(Segno)并保存到S3

Django创建二维码(Segno)并保存到S3
EN

Stack Overflow用户
提问于 2021-03-26 17:16:46
回答 1查看 142关注 0票数 1

我正在寻求创建一个二维码完成用户的个人资料创建表单,并保存到FileField的二维码图像。FileField还用于profile_image字段,该字段已经将表单中的图像保存到S3。我想对二维码做同样的事情(保存到S3存储桶)。

使用Segno,我可以生成二维码。我如何创建它的映像并通过models.py FileField将其保存到S3?

我对models.py和views.py文件的代码如下所示。任何帮助都是非常感谢的。

models.py

代码语言:javascript
运行
复制
class Profile(models.Model):
    def profile_path(instance, filename):
        return 'profile/{0}/{1}'.format(instance.profile_unique, filename)

    def qrcode_path(instance, filename):
        return 'profile/{0}/{1}'.format(instance.profile_unique, filename)
    #unique profile identification (alphanumeric string to be used on path for qrcode and profile image)
    profile_unique = models.CharField(max_length=50, default=0)
    #profile image filefield
    profile_image = models.FileField(upload_to=profile_path, default='')
    #qr code filefield
    qr_code = models.FileField(upload_to=qrcode_path, default='')

views.py

代码语言:javascript
运行
复制
def add_profile(request):
    user = request.user
    userprofile = user.userprofile

    form = ProfileForm(request.POST or None, request.FILES or None)

    if form.is_valid():
        profile = form.save(commit=False)
        profile.profile_user_id = user.id
        profile.profile_unique = get_random_string(8)
        #segno
        qr = segno.make_qr('test')
        qr.save('example.png', scale=4)

        profile.qr_code = qr
        profile.save()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-26 19:04:48

我设法找到了答案,所以为了让任何需要它的人受益,我把它写在下面:

代码语言:javascript
运行
复制
#qr code
import io
import segno
from django.core.files.base import ContentFile

#qr code
out = io.BytesIO()
qr = segno.make('test')
qr.save(out, kind='png', dark='#000000', light=None, scale=3)

filename = 'qr-'+profile.profile_unique+'.png'
profile.qr_code.save(filename, ContentFile(out.getvalue()), save=False)
profile.save()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66814050

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档