2012-08-28 40 views
0

如何將「render_to_response參數」傳遞給新視圖?Django:render_to_response到另一個視圖

def show_list(request, id): 
    try: 
     profile = request.user.get_profile() 
     list = Lista.objects.get(user_profile = profile) 
    except Lista.DoesNotExist: 
     c = {} 
     c.update(csrf(request)) 
     titlepage = "ooops, you don't have a list YET! click on button to create one!" 
     c = {'profile' : profile, 'request' : request, 'titlepage' : titlepage} 
     return render_to_response('/profiles/list/create/',c,context_instance=RequestContext(request)) 

這最後一行不起作用,url/profiles/list/create /重定向到一個視圖create_list。

嗯,我知道我可以寫一些像重定向(/ profiles/list/create /)但是用這個我不能傳遞字典c。

在此先感謝

回答

3

您應該使用django.contrib.messages來顯示您的信息,將用戶重定向到其他視圖。

查看代碼:

from django.contrib import messages 
from django.shortcuts import redirect 

def show_list(request, id): 
    try: 
     # normal flow 
    except Lista.DoesNotExist: 
     messages.warning("ooops, you don't have a list YET! click on button to create one!") 
     return redirect("/profiles/list/create/") 

某處在創建模板:

{% if messages %} 
<ul class="messages"> 
    {% for message in messages %} 
    <li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li> 
    {% endfor %} 
</ul> 
{% endif %} 

還記得正確enable messages

+0

對我有什麼好的例子嗎? – cleliodpaula

+0

我更新了我的答案。 –

+0

雖然這是一個很好的提示,但它並沒有真正回答關於如何將參數傳遞到下一個視圖的問題。可以通過添加一個查詢部分到目標'Location:'來完成。我不知道是否有一個快捷方式來創建GET查詢 - 部分從字典'C',但'urlparse.urlunsplit'看起來很有前途... –

0
return render_to_response('my_template.html', 
         my_data_dictionary, 
         context_instance=RequestContext(request)) 
相關問題