我的目标是创建一个自定义的create函数,该函数可以生成sha256格式的散列,但在我尝试的不同方法中,它总是遇到问题。目前,如果我运行我的应用程序,它会显示以下内容: 属性错误在/sped_创建/ FieldFile对象没有属性“encode”
我模模糊糊地理解是什么导致了这个问题。但我不知道如何修复它。即使在研究了一些不同的方法之后,我也没有发现任何适合我需要的方法。以下是我的代码:
型号.py
def hash_generator(file_bearer):
integrity_hash = hashlib.sha256(file_bearer.encode('utf-8')).hexdigest()
return integrity_hash
class Sped (models.Model):
json_file = models.FileField(upload_to='json_sped')
# sped_file = models.FileField()
integrity_hash = models.CharField(max_length=256, blank=True, null=True)
# line_counter = models.CharField(max_length= 15000000)
created_at = models.DateTimeField(auto_now_add=True)
def save(self, *args, **kwargs):
file_bearer = self.json_file
self.integrity_hash = hash_generator(file_bearer)
super(Sped, self).save(*args, **kwargs)
(缩进是正确的,但出于某种原因,代码片段的结果如下所示)
视图.py
def sped_create(request):
if request.method == 'POST':
form = SpedForm(request.POST, request.FILES)
if form.is_valid():
form.save()
return redirect(sped_list)
else:
form = SpedForm(request.POST, request.FILES, None)
return render(request, 'sped_form.html', {'form': form})
forms.py
class SpedForm(ModelForm):
class Meta:
model = Sped
fields = ['json_file']
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
sped = Sped.objects.all()
context['sped'] = sped
return context
目前没有回答
相关问题 更多 >
编程相关推荐