2013-03-13 86 views
4

我想從一個視圖重定向到另一個視圖並傳遞數據但沒有機會。 這裏是我的代碼:python重定向到另一個視圖

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

您需要使用反向建立你的URL重定向到:

from django.core.urlresolvers 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) 

這裏假設你有一個接受「色器件」的關鍵字參數名爲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'), 
) 

該命名參數將查找一個或多個單詞和多個詞,如一個slu。。您可能想要更改以適應您的需求。

+0

怎麼樣的URL模式? – imoum 2013-03-13 14:00:37

+0

看到我編輯的答案。 – Brandon 2013-03-13 14:04:29

2

試試這個

return HttpResponseRedirect(reverse('affiche_all', devise=('EURO',))) 
相關問題