2016-05-30 2 views
0

У меня есть форма для загрузки файла, которую я не могу получить, чтобы успешно проверить. Форма загружается отлично, и я могу загрузить файл, но после 'submit' я не могу пройти Fileform.is_valid() в представлении. В основном я копирую это представление и модель и модель формы из документации Django 1.9 File Uploads, но я должен что-то пропускать.Форма загрузки файла недействительна

view.py есть

def file_sharing_form(request): 
if request.method == "POST": 
    file = FileForm(request.POST, request.FILES) 
    if file.is_valid(): 
     fform = file.save(commit=False) 
     fform.author = request.user 
     fform.pub_date = timezone.now() 
     fform.submitted_date = timezone.now() 
     fform.approved = False 
     fform.save() 
     # email admin 
     admin_email = User.objects.all().filter(is_superuser = True) 
     subject = 'File submitted to QQIresources, awaiting approval' 
     to_email = admin_email[0].email 
     from_email = request.user.email 
     message = 'A file has been submitted to QQIresources by ' + str(request.user) + ' and is awaiting admin approval. \n \n Title: ' + str(fform.title) + '\n Author: ' + str(fform.author) + '\n Description: ' + str(fform.description) 
     send_mail(subject, message, from_email, [to_email]) 
     return redirect('init') 
fileform = FileForm() 
return render(request, 'file_form.html', {'fileform': fileform}) 
+0

Я знаю, что имена переменных близки, но я думаю, что я использую правильно Fileform = FileForm (.... строчное «х» для формы в первом, так и прописные «F» в форме для второго Спасибо –

+0

Я изменю его, чтобы сделать их более отчетливыми. Но это не проблема, спасибо –

ответ

1

Я думаю, вы пропустили ENCTYPE = "многослойную/форм-данных" в вашем HTML. Добавьте это в свое определение формы для любого типа загрузки файла.

<form action="{% url 'your_url' %}" enctype="multipart/form-data"> 
    <input type="file"> 
</form> 
+0

Я читал о enctype = "multipart/form-data" в документации, но я думал, что это будут ручки в форме. спасибо, –

+0

Добро пожаловать :) @ofey –