Django передает model.class в представление
Я очень новичок в django. Я хотел бы загрузить изображение, отобразить его на моей HTML странице. Затем получить некоторые значения и обработать его в соответствии с этими значениями.
Я создал простой класс модели: '''
class Segment_ch1(models.Model):
title_seg = models.CharField(max_length=200,default='Ch1_seg')
updated_seg = models.DateTimeField(auto_now=True)
created_seg = models.DateTimeField(auto_now_add=True)
segment = models.ForeignKey('Upload_ch1',related_name="%(class)s_Upload_ch1", on_delete=models.CASCADE)
#segment = models.ForeignKey('Upload_ch1',related_name="+", on_delete=models.CASCADE)
# explain https://stackoverflow.com/questions/34003865/django-reverse-query-name-clash
gaus_sigma = models.FloatField(default=20)
gaus_mode = models.CharField(max_length=200,default='constant')
truncate = models.FloatField(default=4)
thresh = models.FloatField(default=0.012)
min_forground = models.FloatField(default=0.0005)
max_forground = models.FloatField(default=0.03)
def __str__(self):
return str(self.id)
def save(self,*args,**kwargs):
#breakpoint()
image = Image.open(self.segment.image)
# #pixels = pixels[0,:,:]
# #use the normalisation method
img = get_image_intensity(image,self.segment.min_inten,self.segment.max_inten)
img_gaus, im_thresh, im_sobel, basins, seg=segment_parkin(img,gaus_sigma=self.gaus_sigma,gaus_mode=self.gaus_mode,truncate=self.truncate,disp_smooth_3d=False,thersh_plot=False,thresh=self.truncate,disp_sobol=False,min_forground=self.min_forground,max_forground=self.max_forground)
im_pil=Image.fromarray(np.uint8(seg))
#save
buffer = BytesIO()
im_pil.save(buffer,format='png')
image_png_1 = buffer.getvalue()
self.segment.image.save(str(self.title_seg), ContentFile(image_png_1),save=False)
'''
чем в представлениях, я получаю значения с помощью forms.py. Однако я не уверен, могу ли я использовать класс модели для сохранения файла процесса, а затем вызвать его для отображения в HTML
Вот моя попытка: '''
def Image_segmentation(resquset):
#im1=Upload_ch1.objects.all()[0]
#im2=Upload_ch2.objects.all()[0]
if resquset.method == 'POST':
ImageForm1_from = ImageForm_c1(resquset.POST)
ImageForm2_from = ImageForm_c2(resquset.POST)
if ImageForm1_from.is_valid():
breakpoint()
title_form=ImageForm1_from.cleaned_data['title']
min_form=ImageForm1_from.cleaned_data['min_inten']
max_form=ImageForm1_from.cleaned_data['max_inten']
im1=Upload_ch1.objects.get(title="Ch1.tif")
Upload_ch1().save(image=im1.image,title=title_form,min_inten=min_form,max_inten=max_form)
#new_img2=
im1=Upload_ch1.objects.get(title="Ch1.tif")
im2=Upload_ch2.objects.get(title="Ch2.tif")
#breakpoint()
ImageForm1_from = ImageForm_c1(resquset.GET)
ImageForm2_from = ImageForm_c1(resquset.GET)
return render(resquset,'Image_segmentation.html',{'ImageForm1_from':ImageForm1_from,'ImageForm2_from':ImageForm2_from,'im1':im1,'im2':im2,})
'''
Upload_ch1().save(image=im1.image,title=title_form,min_inten=min_form,max_inten=max_form)
'''
Ошибка, которую я получаю:
'''
*** ValueError: The 'image' attribute has no file associated with it.
'''