【发布时间】:2021-09-30 07:27:17
【问题描述】:
此代码按预期返回类型错误 str、字节或 os.PathLike 对象,而不是 InMemoryUploadedFile 我不知道如何将用户数据以文件和图像的形式传递给我的 code.py 文件以对原始文件进行更改。
views.py
def home(request):
new_image = None
file = None
form = ScanForm()
if request.method == 'POST':
form = ScanForm(request.POST, request.FILES)
if form.is_valid():
image = request.FILES['image']
xml_file = request.FILES['xml_file']
new_image = code.create(image, code.search(
xml_file)[0], code.search(xml_file)[1])
form.save()
return render(request, 'app/home.html', {'form': form, 'new_image': new_image})
else:
form = ScanForm()
return render(request, 'app/home.html', {'form': form, 'new_image': new_image})
打印图片和xml_file成功打印出他们的名字
forms.py
class ScanForm(forms.ModelForm):
class Meta:
model = Scan
fields = '__all__'
models.py
class Scan(models.Model):
image = models.ImageField(upload_to='images')
xml_file = models.FileField(upload_to='files')
processed_at = models.DateTimeField(auto_now_add=True)
description = models.CharField(max_length=500, null=True)
class Meta:
ordering = ['-processed_at']
def __str__(self):
return self.description
这里是根据数据处理图像的代码在xml中
code.py
def search(path):
new = []
object_names = []
object_values = []
txt = Path(path).read_text()
txt.strip()
names = et.fromstring(txt).findall('object')
for i in names:
object_names.append(i[0].text)
values = et.fromstring(txt).findall('object/bndbox')
for i in values:
for j in i:
object_values.append(int(j.text))
return object_names, object_values
def create(image, object_names, object_values):
img = cv.imread(image)
on = len(object_names)
ov = len(object_values)
for i in list(range(0, ov, on)):
cv.rectangle(img, (object_values[i], object_values[i+1]),
(object_values[i+2], object_values[i+3]), (0, 0, 255), thickness=5)
return img
如果通过使用本地手动传递数据进行测试,此 code.py 工作正常文件夹。
这里是回溯:
【问题讨论】:
-
你能分享整个回溯吗?
-
我已添加回溯图片
-
下次尝试将回溯作为文本 :) 从它来看,
search正在接受路径,但您传递的文件仍在内存中。我不确定search和create到底在做什么,所以我无法给出建议,但您要么必须先保存文件并获取路径,要么更改search以使用内存中的文件而不是路径 -
假设我的
database中有一个image并且我想使用pillow对其进行更改,但只有图像我selected来自数据库那么我将如何设置pillow的图像路径,尝试提供 image.url 并传递图像,但它对我不起作用,我不知道有任何其他方法可以做到这一点。我也尝试使用localhost:80000 + 图片网址 -
不完全确定,也许更新你的标签并添加
pillow,这样用过枕头的人可能会给你一些想法
标签: django django-models django-views django-forms django-templates