1

フォームから値を取得し、MyViewlikeというビューMyView/formvalue1/formvalue2にワンステップでリダイレクトするにはどうすればよいですか?私には解決策がありますが、それは正しい方法ではないと思います。

詳細に:

チュートリアルで提案されているように、Djangoの評価を使用しようとしています

urlpatterns = patterns('',
    url(r'rate-my-post/(?P<object_id>\d+)/(?P<score>\d+)/', AddRatingFromModel(), {
        'app_label': 'blogs',
        'model': 'post',
        'field_name': 'rating',
    }),
)

私はVoteForm.htmlをレンダリングするVoteFormビューを持っています。VoteForm.htmlでフォームアクションはどうあるべきですか?/ rate-my-post /にすると、URLがのようrate-my-post/?objectid=x&score=yになるため、正規表現できません。その後、DjangoはURLを認識しないため、正規表現できません?

私の解決策は次のとおりです。ジャンクと呼ばれる別のビューを作成し、フォームがそのビューに送信し、ジャンクビューがフォームの値を取得してから、ジャンクがHttpResponseRedirectをrate-my-postにリダイレクトします。

4

1 に答える 1

2

フォームの処理に使用するのと同じビュー(および同じURL)を使用してフォームをレンダリングする必要があります(djangoドキュメントでこの例を参照してください)。フォームが正常に処理されたら、リバースを使用して必要なページにリダイレクトします。

何かのようなもの -

def vote_form(request):
    if request.method == 'POST': # If the form has been submitted...
        form = VoteForm(request.POST) # A form bound to the POST data
        if form.is_valid(): # All validation rules pass
            # Process the data in form.cleaned_data
            # ...
            return HttpResponseRedirect(reverse('my_view_name', 
                                                kwargs={'objectid':x, 'score': y}))
    else: # We're just rendering the html form
        form = VoteForm() # An unbound form

    return render(request, 'vote.html', {
        'form': form,
    })
于 2013-01-23T09:19:21.833 に答える