4

ビューから別のビューにリダイレクトしてデータを渡したいのですが、チャンスがありません。これが私のコードです:

def affiche(request):
    if request.method == 'POST':                                     
        form = AfficheForm(request.POST)
        if form.is_valid():
            Select = form.cleaned_data['Select']
            if Select == '1':
                return redirect('affiche_all', devise='EURO')


def affiche_all(request, devise):
    data = websvc(devise)
    return render_to_response('affiche_all.html', {'data': data},
        RequestContext(request))  

私はdjango開発に不慣れなので、あなたの助けに感謝します。

4

2 に答える 2

4

リダイレクトするURLを作成するには、reverseを使用する必要があります。

from django.urls import reverse
from django.http import HttpResponseRedirect


def affiche(request):
    form = AfficheForm(request.POST or None)
    if request.method == 'POST':     
        if form.is_valid():
            Select = form.cleaned_data['Select']
            if Select == '1':
                url = reverse('affiche_all', args=(),
                    kwargs={'devise': 'EURO'})
                return HttpResponseRedirect(url)

これは、「devise」のキーワード引数を受け入れる名前付きURLパターンがあることを前提としています。

from django.conf.urls import url, patterns

urlpatterns = patterns('your_app.views',
    url(r'^some-path/(?P<devise>[-\w]+)/$', 'affiche_all', name='affiche_all'),
)

その名前付きパラメーターは、ナメクジのように1つ以上の単語とハイフンを検索します。ニーズに合わせて変更することをお勧めします。

于 2013-03-13T13:44:56.273 に答える
2

これを試して

return HttpResponseRedirect(reverse('affiche_all', devise=('EURO',)))
于 2013-03-13T13:45:10.597 に答える