0

장고의 업로드 기능을 사용하려고 노력해 왔지만 제대로 작동하지 않는 것 같습니다. 내 양식에 이미 enctype="multipart/form-data"이 포함되어 있으므로 문제가 될 수 없습니다. 어쨌든 여기 메신저 작업 내용은 다음과 같습니다Django Upload Images

이 내 모델입니다

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

이미 시도 : 이것은 내이다

class UploadImageForm(forms.ModelForm): 
    class Meta: 
     model = Photo 
     field = ('image', 'caption', 'source', 'extra_info',) 
     exclude = ('status','slug',) 

djangief에 표시된대로 청크 (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 
    })