models.py:
class Empresa(models.Model):
logo = models.FileField(null=True)
forms.py:
class ConfiEmpresa(ModelForm):
logo = forms.FileField(required=False)
class Meta:
model = Empresa
form字段正在呈现的html输入代码如下:
<input type="file" name="logo" id="id_logo">
views.py:
import base64
def configempresa(request):
if request.method == "POST":
form = ConfiEmpresa(request.POST, request.FILES)
print(form.errors) # I'm not having any form error here
if form.is_valid():
logo = form.cleaned_data.get('logo')
print(logo) # It's printing "None"
logo = base64.encodebytes(logo)
#...rest of the view
我得到的错误:
TypeError at /Config/empresa/
expected bytes-like object, not NoneType
因此,总而言之,我正在尝试将用户设置为“徽标”的jpg文件转换为base64,以便将其存储在数据库中,并在以后对其进行解码,以将其获取到需要的位置。
我当然做错了,我认为这是我的观点。如何处理表单字段logo
的值以将其转换为base64?
我没有将原始文件存储在任何文件夹中。
答案 0 :(得分:1)
将徽标保存在ImageField
中会更好吗?
如果要保存base64图像,只要以后只显示图像,就可以始终将其作为字符串保存在TextField
中。
答案 1 :(得分:0)
解决方案:
if form.is_valid():
logo = form.cleaned_data.get('logo')
print(logo)
logo = base64.b64encode(logo.file.read())