我对不保存所选文件的 ModelForm 有疑问。
我在接收表单数据的视图的第一行使用 pdb 看到了这一点:
(Pdb) pp request.FILES
<MultiValueDict: {}>
该enctype
属性在form
标签中设置。这至少发生在 Chromium 和 Opera 中。
我已经阅读了很多关于这个问题的问题,但对我的情况没有任何帮助,还有什么进一步的想法吗?
这是模型的相关部分:
class AudioCut(models.Model):
slug = models.SlugField(max_length=128, unique=True)
logo = models.ImageField(upload_to=u'cuts_logos', blank=True)
这是表格:
class AudioCutForm(ModelForm):
"Form for creating a new AudioCut"
start = SecondsSinceEpochField()
tags = TagsCommaSeparatedField()
class Meta:
model = AudioCut
fields = ('title', 'description', 'logo', 'start', 'length',
'category', 'tags', 'radio', 'show')
widgets = {'title': TextInput(attrs={'size': 34, 'maxlength': 32}),
'radio': HiddenInput(), 'show': HiddenInput(),
'tags': Textarea()}
这是视图:
def make_new_cut(request):
if request.method == 'POST':
cutform = AudioCutForm(request.POST, request.FILES)
out_data['cutform'] = cutform
if cutform.is_valid():
newcut = cutform.save(False)
newcut.owner = request.user
newcut.save()
cutform.save_m2m()
这是模板:
<form enctype="multipart/form-data" id="cut_this_frm" method="post" action="#">{% csrf_token %}
<label for="id_title">* Título</label>{{cutform.title}}
{{cutform.title.errors}}
<label for="id_description">Descipción</label>{{cutform.description}}
{{cutform.description.errors}}
<label for="id_tags">Etiquetas</label>{{cutform.tags}}
<span class="help_text">Separe las etiquetas con comas (,)</span><br/>
{{cutform.tags.errors}}
<input type="button" class="image_upload"/><label for="id_logo" class="image_upload">Agregar imagen</label>{{cutform.logo}}<span id="logo_filename"> </span>
{{cutform.radio}}{{cutform.show}}{{cutform.start}}{{cutform.length}}
<div class="errors">{{cutform.non_field_errors}}</div>
<input type="hidden" name="next_url" id="next_url" value="#"/>
<div class="save_cut"><input type="reset" value="Cancelar"/><input type="submit" value="Guardar"></div>
</form>
我检查的其他内容,保存图像的文件夹存在并且服务器可以写入它。我可以使用 Django 的管理员添加图片。
我在 localhost:62080 上运行开发服务器。