Django 创建二维码(Segno)并保存到 S3
Django create QR code (Segno) and save to S3
我正在寻求在完成用户配置文件创建表单后创建 QR 码,并将 QR 图像保存到 FileField。 FileField 还用于已将图像从表单保存到 S3 的 profile_image 字段。我想对 QR 码做同样的事情(保存到 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()
设法找到答案,为了任何需要它的人的利益,我将其包含在下面:
#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()
我正在寻求在完成用户配置文件创建表单后创建 QR 码,并将 QR 图像保存到 FileField。 FileField 还用于已将图像从表单保存到 S3 的 profile_image 字段。我想对 QR 码做同样的事情(保存到 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()
设法找到答案,为了任何需要它的人的利益,我将其包含在下面:
#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()