我正在寻求创建一个二维码完成用户的个人资料创建表单,并保存到FileField的二维码图像。FileField还用于profile_image字段,该字段已经将表单中的图像保存到S3。我想对二维码做同样的事情(保存到S3存储桶)。
使用Segno,我可以生成二维码。我如何创建它的映像并通过models.py FileField将其保存到S3?
我对models.py和views.py文件的代码如下所示。任何帮助都是非常感谢的。
models.py
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
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()发布于 2021-03-26 19:04:48
我设法找到了答案,所以为了让任何需要它的人受益,我把它写在下面:
#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()https://stackoverflow.com/questions/66814050
复制相似问题