2013-02-02 98 views
0

我已經查看了所有關於此的stackoverflow和互聯網,所以我只會顯示我的代碼。Django表單錯誤沒有顯示

views.py

def UserSell(request,username): 

theuser=User.objects.get(username=username) 
thegigform=GigForm() 
#if the user is submitting a form 
if request.method=='POST': 
    #bind form with form inputs and image 
    gigform=GigForm(request.POST,request.FILES) 
    if gigform.is_valid(): 
     gigform.title=gigform.cleaned_data['title'] 
     gigform.description=gigform.cleaned_data['description'] 
     gigform.more_info=gigform.cleaned_data['more_info'] 
     gigform.time_for_completion=gigform.cleaned_data['time_for_completion'] 
     gigform.gig_image=gigform.cleaned_data['gig_image'] 
     finalgigform=gigform.save(commit=False) 
     finalgigform.from_user=theuser 
     finalgigform.save() 
     return HttpResponseRedirect('done') 
thegigform=GigForm() 
context=RequestContext(request) 
return render_to_response('sell.html',{'theuser':theuser,'thegigform':thegigform},context_instance=context) 

模板

<form action="{% url sell user.username %}" method="post" enctype="multipart/form-data"> 
{% csrf_token %} 
<fieldset> 
    <legend><h2>Sell A Gig</h2></legend> 
    {% for f in thegigform %} 
    <div class="formWrapper"> 
     {{f.errors}} 
     {{f.label_tag}}: {{f}} 
     {{f.help_text}} 
    </div> 
    {% endfor %} 
</fieldset> 
<input type="submit" value="Sell Now!" /> 

此代碼似乎遵循普通的Django形式的協議,請告訴我爲什麼我的Django的模板犯規顯示錯誤。謝謝

回答

3

它看起來像你缺少一個else塊。

如果gigform.valid()返回false,則覆蓋變量「thegigform」。嘗試重新構造你的代碼,如下所示:

if request.method=='POST': 
    #bind form with form inputs and image 
    thegigform=GigForm(request.POST,request.FILES) 
    if thegigform.is_valid(): 
     thegigform.title=gigform.cleaned_data['title'] 
     thegigform.description=gigform.cleaned_data['description'] 
     thegigform.more_info=gigform.cleaned_data['more_info'] 
     thegigform.time_for_completion=gigform.cleaned_data['time_for_completion'] 
     thegigform.gig_image=gigform.cleaned_data['gig_image'] 
     finalgigform=gigform.save(commit=False) 
     finalgigform.from_user=theuser 
     finalgigform.save() 
     return HttpResponseRedirect('done') 
else: 
    thegigform=GigForm() 
context=RequestContext(request) 
return render_to_response('sell.html',{'theuser':theuser,'thegigform':thegigform},context_instance=context) 
+0

這就是我在我的代碼之前,但被告知要改變,所以我把其他回來趕上,如果請求得到。問題沒有解決 –

+0

你看到爲什麼在你的發佈代碼中你永遠不會看到錯誤?如果gigform.is_valid()返回False,那麼你就像request.method!='POST'一樣沿着相同的代碼路徑。也就是說,您正在創建一個新的GigForm對象。要查看呈現的錯誤,您需要在上下文中將'thegigform'設置爲導致gigform.is_valid()返回False的相同對象。 –

+0

所以上下文將gigform?我很抱歉,如果遇到問題,可以告訴我代碼應該是什麼樣子。 thegigform = gigform .... {'thegigform':thegigform}像那樣? –