使用django表单从url上传csv文件

时间:2013-03-28 05:02:36

标签: python django post file-upload

所以我试图通过POST上传一个csv文件到一个变量到一个url。我查看了发现here的文件上传的django文档。我只是不明白使用表格?这种情况的目的是什么?

他们使用表格的示例:

from django import forms
from django.http import HttpResponseRedirect
from django.shortcuts import render_to_response

# Imaginary function to handle an uploaded file.
from somewhere import handle_uploaded_file

class UploadFileForm(forms.Form):
    title = forms.CharField(max_length=50)
    file  = forms.FileField()

def upload_file(request):
    if request.method == 'POST':
        form = UploadFileForm(request.POST, request.FILES)
        if form.is_valid():
            handle_uploaded_file(request.FILES['file'])
            return HttpResponseRedirect('/success/url/')
    else:
        form = UploadFileForm()
    return render_to_response('upload.html', {'form': form})

上传html:

<form enctype="multipart/form-data" action="/upload/" name="test" method="post">
    <input id="file" type="file" name="test" />
    <input id="signUpSubmit" type="submit" value="Submit">
</form>

1 个答案:

答案 0 :(得分:3)

models.py

from django.db import models

class Upload(models.Model):
    name = models.CharField(max_length=100)
    file = models.FileField(upload_to="images")

forms.py

from django import forms
from app_name.models import Upload

class UploadForm(forms.ModelForm):
    class Meta:
        model = Upload

views.py

def upload_file(request):
    if request.method == 'POST':
        form = UploadForm(request.POST, request.FILES)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect('/success/url/')
    else:
        form = UploadFileForm()
    return render_to_response('upload.html', {'form': form})

upload.html

<form enctype="multipart/form-data" action="/upload/" name="test" method="post">
    {% csrf_token %}
    {{form.as_p}}
    <input id="signUpSubmit" type="submit" value="Submit">
</form>