0

最初の投稿なので、どんな初心者でも許してください - 私は複数ページの製品サインアップフォームを作成しようとしています. 表示するフォームと送信ボタンを取得できますが、urls.py ファイルの URL パターンの例が見つかりません。次の提案を含む別の同様の質問を見つけました。

「リクエストを処理するビューを作成する必要があります。(それを行いました) urls.py を編集して、クイズの URL を views.py の関数にマップする必要があります (試行中ですが、失敗しています)。したがって、そのクイズの URL を使用したリクエストがDjango がそのビュー関数を適用します。

ユーザーを新しいURLにリダイレクトすると問題になります。次のパターンがどうあるべきかの例が見つからないようです。これが私の urls.py コードです (index.html と details.html はこれまでの私のテンプレートです):

url(r'^signup/$', 'signup.views.select_product', name='select_product'),
url(r'^signup/(?P<product_id>\d+)/$', 'signup.views.subscriber_signup', name='subscriber_signup'),
    #...

これが私のビューコードです:

def select_product(request):
    title = "get yourself an e-edition. wurd."
    pform = ProductForm(request.POST)  
    if request.method == 'POST': # If the form has been submitted...
        pform = ProductForm(request.POST) # A form bound to the POST data
        if pform.is_valid(): # All validation rules pass
        # Process the data in form.cleaned_data
        # ...
            return HttpResponseRedirect('signup/index.html') # Redirect after POST
    else:
        form = ProductForm() # An unbound form
    return render_to_response('signup/index.html', {'title': title, 'pform': pform}, context_instance=RequestContext(request))

def subscriber_signup(request, product_id):
    signup = Product.objects.get(id=product_id)
    title = "get yourself an e-edition. wurd."
    sform = SubscriberForm(request.POST)  
    if request.method == 'POST': # If the form has been submitted...
        sform = SubscriberForm(request.POST) # A form bound to the POST data
        if sform.is_valid(): # All validation rules pass
        # Process the data in form.cleaned_data
        # ...
            return HttpResponseRedirect('signup/detail.html') # Redirect after POST
    else:
        sform = SubscriberForm() # An unbound form
    return render_to_response('signup/detail.html', {'title': title, 'sform': sform, 'signup': signup,}, context_instance=RequestContext(request))
4

2 に答える 2

0

または、このために設計されたDjango のフォーム ウィザードを使用します。

于 2012-04-13T22:23:13.863 に答える
0

そのため、問題の一部は、SubscriberForm のベースとなっている Subscriber クラスで (User) モデルを使用していたことにありました。私はそれを捨てて、オブジェクトが個別に定義された通常のクラスに基づいてフォームを作成しました。

最終的に機能した URL パターンを次に示します。

url(r'^signup/$', 'signup.views.select_product', name='select_product'),
url(r'^signup/(?P<product_id>\d+)/$', 'signup.views.subscriber_signup', name='subscriber_signup'), 
url(r'^signup/(?P<product_id>\d+)/thankyou/$', 'signup.views.thankyou', name='thankyou'),

回答ありがとうございます。

アンソニー

于 2012-04-13T21:41:41.790 に答える