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 
    })