2013-03-28 136 views
-1

所以我想通过一个POST上传并保存一个csv文件到一个url。我查看了文件上传的django文档,找到了here。我只是不明白使用表单?这种情况的目的是什么?使用Django表单上传csv文件

他们用一个例子用一种形式:

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> 

回答

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>