Django Загрузить изображения - PullRequest
1 голос
/ 16 декабря 2011

Я пытался работать с функциями загрузки Django, но я просто не могу заставить его работать.Моя форма уже содержит enctype="multipart/form-data", так что это не может быть проблемой.В любом случае вот с чем я работаю:

Это моя модель

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)

Это моя форма:

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

Это мой взгляд:

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, и это тоже не работает.Может ли быть проблема с моим кодом, если это так, я был бы признателен, если кто-то может указать на это.Заранее спасибо.

1 Ответ

2 голосов
/ 16 декабря 2011

Я уверен, что ваша форма недействительна (например, не требуется 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
    })
...