Django只上传csv文件

时间:2016-09-03 05:14:43

标签: python django csv

我正在尝试导入csv文件我能够导入没有任何问题但是目前的功能接受所有文件类型,我希望功能只接受csv文件。下面是view.py和模板文件。

的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>
  

修改

     

我可以通过添加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])

2 个答案:

答案 0 :(得分:4)

表单小部件以验证文件扩展名

csv_file = forms.FileField(widget=forms.FileInput(attrs={'accept': ".csv"}))

答案 1 :(得分:1)

在forms.py文件中添加了代码段以验证文件扩展名,现在它正常工作。

TimeZone.getAvailableIDs()