Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 需要图像上传django表单的帮助吗_Python_Django_Forms_Django Models - Fatal编程技术网

Python 需要图像上传django表单的帮助吗

Python 需要图像上传django表单的帮助吗,python,django,forms,django-models,Python,Django,Forms,Django Models,我已经拉最后上传的图像使用以下代码 class categoryForm(forms.Form): name = forms.CharField(widget=forms.TextInput(attrs={'class':'box'}),max_length=32,label='Category',required=True) is_active = forms.BooleanField(required=False) id = forms.CharField(widget=f

我已经拉最后上传的图像使用以下代码

class categoryForm(forms.Form):
   name = forms.CharField(widget=forms.TextInput(attrs={'class':'box'}),max_length=32,label='Category',required=True)
   is_active = forms.BooleanField(required=False)
   id = forms.CharField(widget=forms.HiddenInput,required=False)
   photo = forms.ImageField(
     required=False,
     label='Upload photo',
     initial=True,
     help_text='max. 4 megabytes'
     )
   def __init__(self, data,**kwargs):
     super(categoryForm, self).__init__(data, **kwargs)
      if self.data['photo']!='':
         self.fields['photo'].initial=self.data['photo']
我在填充更新表单时传递了数据

p=Category.objects.get(id='%s'%(target_id))
formdata = categoryForm({'name':p.name,'is_active':p.is_active,'id':p.id,'photo':p.image()})
它完美地显示了最初的图像

因为我还有FileField,所以我需要在调用categoryForm的操作页面中传递额外的参数,即

formdata = categoryForm(request.POST,request.FILES)
这个额外的参数给了我下面的错误

__init__() takes exactly 2 arguments (3 given)
如果我删除request.FILESinit()工作正常,但我无法上载图像:)


请指导我

\uuuuu init\uuuu
函数更改为该函数是否有帮助

  def __init__(self, data, *args, **kwargs):
     super(categoryForm, self).__init__(data, **kwargs)
      if self.data['photo']!='':
         self.fields['photo'].initial=self.data['photo']

我不确定你的代码是否正确,如果你说它有效。。。然后它就起作用了。 错误来自这里:

   def __init__(self, data,**kwargs):
     super(categoryForm, self).__init__(data, files, **kwargs)
      if self.data['photo']!='':
         self.fields['photo'].initial=self.data['photo']
或者你可以这样做:

formdata = categoryForm(data = request.POST, files = request.FILES)

   def __init__(self, *args, **kwargs):
     super(categoryForm, self).__init__(*args, **kwargs)
      if self.data['photo']!='':
         self.fields['photo'].initial=self.data['photo']