0

我一直在努力与Django的上传功能,但我似乎无法让它工作。我的表单已经包含enctype="multipart/form-data",所以不能成为问题。反正这里是什么即时通讯与工作:Django上传图片

这是我的模型

class Photo(models.Model): 
    """ This represents a Photo 
    """ 
    caption = models.CharField(_("caption"), max_length=100, null=True, 
     blank=True, unique=True) 
    image = ValidateImageField(
    upload_to='uploaded_photos/Published/%Y/%B/%d/', 
    content_types=['image/jpeg', 'image/gif', 'image/png'], 
    max_upload_size= settings.FILE_UPLOAD_MAX_MEMORY_SIZE 
    ) 
    source = models.URLField(_("source"), null=True, blank=True) 
    status = models.CharField(_("status"), max_length=1, choices=STATUS_CHOICES, default='H') 
    date_added = models.DateTimeField(_("date_added"), auto_now_add=True) 
    date_modified = models.DateTimeField(_("date_modified"), auto_now=True) 
    slug = models.SlugField(_("slug"), max_length=50, unique=True) 
    extra_info = models.TextField(_("extra_info"), null=True, blank=True) 

这是我的形式:

​​

这是我的看法:

def submit_image(request): 
    if request.method == 'POST': 
     form = UploadImageForm(request.POST, request.FILES) 
     if form.is_valid: 
      form.save() 
     return redirect('photos.views.upload_success') 

    form = UploadImageForm() 
    return render(request,'photos/upload.html', { 
     'form': form 
    }) 

我已经尝试使用djangodocs中显示的chunks方法,这也不起作用。如果有的话,我的代码可能会出现问题,如果有人能指出它,我将不胜感激。提前致谢。

回答

2

我确定您的表单无效(例如,没有要求提供slug)。但是你不处理这个问题,无论如何重定向到成功页面。在is_valid之后你也忘记了括号,所以它总是会是True。正确的看法是这样的:

def submit_image(request): 
    form = UploadImageForm(request.POST or None, request.FILES or None) 
    if form.is_valid(): 
     form.save() 
     return redirect('photos.views.upload_success') 

    return render(request,'photos/upload.html', { 
     'form': form 
    })