Django -Проверка типа загруженного файла

Мне нужно проверить тип файла загруженного файла и разрешить только файлы pdf, простой тест и файлы MS Word. Вот моя модель и форма с функцией проверки. Но я могу загружать файлы даже без расширения.

class Section(models.Model):
    content = models.FileField(upload_to="documents")

class SectionForm(forms.ModelForm):
    class Meta:
        model = Section
    FILE_EXT_WHITELIST = ['pdf','text','msword']

    def clean_content(self):
        content = self.cleaned_data['content']
        if content:
            file_type = content.content_type.split('/')[0]
            print file_type
            if len(content.name.split('.')) == 1:
                raise forms.ValidationError("File type is not supported.")
            if content.name.split('.')[-1] in self.FILE_EXT_WHITELIST:
                return content
            else:
                raise forms.ValidationError("Only '.txt' and '.pdf' files are allowed.")

Вот вид,

def section_update(request, object_id):
    section = models.Section.objects.get(pk=object_id)
    if 'content' in request.FILES:
            if request.FILES['content'].name.split('.')[-1] == "pdf":
                content_file = ContentFile(request.FILES['content'].read())
                content_type = "pdf"
                section.content.save("test"+'.'+content_type, content_file)
                section.save()

На мой взгляд, я просто сохраняю файл из папки request.FILE. Я думал, что при сохранении ()он вызовет чистый _контент и выполнит проверку типа контента -. Я предполагаю, что чистый _контент вовсе не требует проверки.

5
задан Babu 2 August 2012 в 08:13
поделиться