0

我对不保存所选文件的 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&iacute;tulo</label>{{cutform.title}}
    {{cutform.title.errors}}
    <label for="id_description">Descipci&oacute;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">&emsp;</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 上运行开发服务器。

4

0 回答 0