1

私は、ユーザーの登録後に、リンクをクリックして別の注文の詳細を入力できるページを参照するアプリを作成しています。そのリンクをクリックすると、次のビューがアクティブになります

def Checkout_Attributes(request):

    check_form = Check_Attribute_Form()
    context={'check_form':check_form}
    return render_to_response('checkout.html',context,context_instance=RequestContext(request))

フォームを送信すると、次のビューがアクティブになります

def Set_Checkout_Attributes(request):

    #if request.user.is_authenticated():
        #return HttpResponseRedirect('/checkout/')

    if request.method == 'POST':
        check_form = Check_Attribute_Form(request.POST)
            if check_form.is_valid():
            customer_check=Customer_check_attributes(billing_add=check_form.cleaned_data['billing_add'],shipping_add=check_form['shipping_add'],payment_method=check_form['payment_method'],shipping_method=check_form['shipping_method'],reward_points=check_form['reward_points'])
            customer_check.save()
            return render_to_response('sucess.html')
    else:
        check_form=Check_Attribute_Form()
        return render_to_response('a.html',{'check_form':check_form} , context_instance=RequestContext(request))  

このビューでは、Set_Checkout_AttributesがHttpResponseオブジェクトを返さなかったというエラーが発生します。

また、空白のフォームを送信すると、検証エラーが表示されないことがもう1つあります。

テンプレートは次のとおりです

<form action="/checkout1/" method="post">
{% csrf_token %}
{% if check_form.errors  %}<h2>Please correct the following fields:</h2>{% endif %}
<div class="register_div">
        {% if check_form.billing_add.errors %}<p class="error">{{ check_form.billing_add.errors }}</p>{% endif %}
    <p><label for="billing_add" {% if check_form.billing_add.errors %} class="error"{% endif %}>Billing Address:</label></p>
    <p>{{ check_form.billing_add }}</p>
</div>
.
.
.
.
.
<p><input type="submit" value="submit" aly="register"/></p>
</form>
4

1 に答える 1

0

まず、変数とビューに適切なPEP-8名を使用してください。

次に、成功時にテンプレートをレンダリングしないでください。新しいページにリダイレクトしてください。

最後に、あなたの見解の論理について考えてください。フォームが無効な場合はどうなりますか?その状況で何が返されますか?ドキュメントの例をもう一度見てください。使用する必要のある構造が正確に示されています。

于 2012-09-18T06:35:55.353 に答える