2012-03-07 50 views
0

我想在我的視圖上傳一個CSV文件。我包括csrf令牌,但是當我嘗試上傳文件時,我直接採取403錯誤。這是我的觀點和模板:另一個CRSF令牌錯誤,而在django文件uploding

我的表格HTML

<div class="file-boxes"> 
     <form enctype="multipart/form-data" action="" encoding="multipart/form-data" id="upload-csv" method="post"> 
      {% csrf_token %} 
      {{form.csv}} 
      <!-- <input class="input-file" id="fileInput" type="file" size="14" name="csv_upload" onchange="this.form.submit()"> --> 
     </form> 
    </div> 

我的形式

class DeliveryDataForm(forms.Form): 
    csv = forms.FileField(widget=forms.ClearableFileInput(attrs={'size:':14,'onchange':'this.form.submit()'})) 

我看來

def upload_data(request): 
    ... 
    form = DeliveryDataForm() 

    if request.method == "POST": 
     import pdb 
     pdb.stack_trace() 
     form = DeliveryDataForm(request.POST, request.FILES) 
     return HttpResponse('asd') 

    return render_to_response(template,context) 

我知道在視圖中有一些缺失的部分,但奇怪的是,它從來沒有進入if部分。任何想法 ?

+0

即使您將表單渲染爲「{{form}}」而不是「{{form.csv}}」,是否會發生這種情況? – yedpodtrzitko 2012-03-07 10:41:30

+0

是的,我也嘗試{{form}},仍然得到錯誤 – iva123 2012-03-07 10:44:26

+4

並且您是否閱讀錯誤頁面或[文檔](https://docs.djangoproject.com/en/1.3/ref/contrib/ csrf /),它清楚地表明您需要使用RequestContext才能獲得csrf密鑰? – 2012-03-07 10:48:50

回答

1
from django.shortcuts import render 
# ... 
# return render_to_response(template,context) 
return render(request,'index.html',context)