Django 图像上载和基于CreateView的视图
我希望能够使用CreateView和ModelForm上传一个图像文件,但我无法让它工作-在选择一个文件后,表单似乎没有绑定任何文件数据。以下是视图的当前内容:Django 图像上载和基于CreateView的视图,django,image-upload,django-class-based-views,Django,Image Upload,Django Class Based Views,我希望能够使用CreateView和ModelForm上传一个图像文件,但我无法让它工作-在选择一个文件后,表单似乎没有绑定任何文件数据。以下是视图的当前内容: class AddContentForm(forms.ModelForm): class Meta: model = Media class AddContentView(CreateView): template_name = 'simple_admin/add_content.html'
class AddContentForm(forms.ModelForm):
class Meta:
model = Media
class AddContentView(CreateView):
template_name = 'simple_admin/add_content.html'
form_class = AddContentForm
def get_success_url(self):
return u'/opettajat/subcategory/{0}/{1}/'.format(self.kwargs['subcat_name'].decode('utf-8'), self.kwargs['subcat_id'].decode('utf-8'))
def form_valid(self, form):
isvalid = super(AddContentView, self).form_valid(form)
s = Subcategory.objects.get(pk=self.kwargs['subcat_id'].encode('utf-8'))
if self.request.POST.get('image'):
image = form.cleaned_data['image']
title = form.cleaned_data['art_title'].encode('utf-8')
year_of_creation = form.cleaned_data['year_of_creation']
m = Media.objects.get_or_create(image=image, art_title=title, year_of_creation=year_of_creation)[0]
s.media.add(m)
s.save()
return isvalid
def get_context_data(self, **kwargs):
context = super(AddContentView, self).get_context_data(**kwargs)
context['subcategory_name'] = self.kwargs['subcat_name'].encode('utf-8')
context['subcategory_id'] = self.kwargs['subcat_id'].encode('utf-8')
return context
@method_decorator(login_required)
def dispatch(self, request, *args, **kwargs):
return super(AddContentView, self).dispatch(request, *args, **kwargs)
有人能帮忙吗?一个简单的基于类的图像上传视图示例将不胜感激。上传的文件存储在
请求.files
中,而不是请求.POST
中。不要忘记将enctype=“multipart/form data”
添加到您的
标记中
我认为
form\u有效的方法是用于验证的,不是用于保存数据的,不是吗?我的(刚才谷歌搜索出了那个)中有enctype=“multipart/form data”,但感谢您的提醒:)self.request.POST.get('image')只检查是否使用了forms image字段。最大的问题是self.request.FILES在提交表单时不包含任何内容,因此我无法对其执行任何操作。@boromil文件是否发送到服务器?(与FireBug核对)啊,对不起-没有注意到FireBug部分-在FireBug中我可以在哪里找到关于发送文件的信息-我不太熟悉它{%csrf_token%}{{form.as_django_admin}}
@boromil在网络选项卡上,您可以检查post请求的标题。如果文件未发送,则说明表单的html布局有问题。您是对的-模板文件中有错误-它现在已正确上载-现在我只需要修复一些其他内容。谢谢你的帮助:)