0

これについてstackoverflowとインターネット全体を見てきましたので、コードを示します。

ビュー.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 テンプレートでエラーが表示されない理由を教えてください。ありがとう

4

1 に答える 1

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)
于 2013-02-02T19:54:09.657 に答える