2016-09-03 3 views
1

Я пытаюсь импортировать файл csv, который я могу импортировать без каких-либо проблем, но настоящая функциональность принимает все типы файлов, я хочу, чтобы функциональность принимала только файл csv. ниже приведен файл view.py и template.Django загружать только файл csv

MyApp/views.py

def list(request): 
    # Handle file upload 
    if request.method == 'POST': 
     form = DocumentForm(request.POST, request.FILES) 
     if form.is_valid(): 
      importing_file(request.FILES['docfile']) 

MyApp/шаблоны/MyApp/index.html

<form action="{% url 'ml:list' %}" method="post" enctype="multipart/form-data"> 
      {% csrf_token %} 
      <p>{{ form.non_field_errors }}</p> 

      <p>{{ form.docfile.label_tag }} {{ form.docfile.help_text }}</p> 

      <p> 
       {{ form.docfile.errors }} 
       {{ form.docfile }} 
      </p> 

      <p><input type="submit" value="Upload"/></p> 
     </form> 

EDIT

я мог бы найти обходной путь, добавив validate_file_extension согласно django documentation

MyApp/forms.py

def validate_file_extension(value): 
     if not value.name.endswith('.csv'): 
      raise forms.ValidationError("Only CSV file is accepted") 
class DocumentForm(forms.Form): 
    docfile = forms.FileField(label='Select a file',validators=[validate_file_extension]) 
+0

получить тип пантомимы файл и проверить, если это CSV. – MaNKuR

+0

Эта ссылка предоставляет обходное решение http://stackoverflow.com/a/8826854/4915288 – hkhr

ответ

1

добавлен фрагмент кода в forms.py файл для проверки расширения файла и теперь он работает нормально.

def validate_file_extension(value): 
     if not value.name.endswith('.csv'): 
      raise forms.ValidationError("Only CSV file is accepted") 
class DocumentForm(forms.Form): 
    docfile = forms.FileField(label='Select a file',validators=[validate_file_extension]) 
3

форма виджет для проверки расширения файла

csv_file = forms.FileField(widget=forms.FileInput(attrs={'accept': ".csv"})) 
Смежные вопросы