2011-07-20 36 views
2

我想知道是否有任何方式在django重定向函數或任何其他上下文中包含RequestContext。django重定向請求上下文()

問題是我需要在創建對象後添加消息,但消息framewotk需要使用RequestContext才能工作,或者需要其他上下文來返回消息。我怎樣才能返回上下文?

我的觀點:

@permission_required('spaces.add_space') 
def create_space(request): 

    """ 
    Returns a SpaceForm form to fill with data to create a new space. There 
    is an attached EntityFormset to save the entities related to the space. Only 
    site administrators are allowed to create spaces. 

    :attributes: - space_form: empty SpaceForm instance 
       - entity_forms: empty EntityFormSet 
    :rtype: Space object, multiple entity objects. 
    :context: form, entityformset 
    """ 
    space_form = SpaceForm(request.POST or None, request.FILES or None) 
    entity_forms = EntityFormSet(request.POST or None, request.FILES or None, 
           queryset=Entity.objects.none()) 

    if request.user.is_staff:  
     if request.method == 'POST': 
      space_form_uncommited = space_form.save(commit=False) 
      space_form_uncommited.author = request.user 

      if space_form.is_valid() and entity_forms.is_valid(): 
       new_space = space_form_uncommited.save() 
       space = get_object_or_404(Space, name=space_form_uncommited.name) 

       ef_uncommited = entity_forms.save(commit=False) 
       for ef in ef_uncommited: 
        ef.space = space 
        ef.save() 

       # We add the created spaces to the user allowed spaces 
       request.user.profile.spaces.add(space) 

       # This message does not work since there's no context. 
       messages.info(request, 'Space %s created successfully.' % space.name) 

       return redirect('/spaces/' + space.url) 

     return render_to_response('spaces/space_add.html', 
           {'form': space_form, 
           'entityformset': entity_forms}, 
           context_instance=RequestContext(request)) 
    else: 
     return render_to_response('not_allowed.html', 
            context_instance=RequestContext(request)) 
+0

當你進入一個視圖立即將消息會發生什麼,然後打刷新幾次? –

+0

我沒有嘗試,但是ir解決了新問題,問題是下一個視圖(顯示空間索引的問題) –

回答

2

存儲消息不需要的RequestContext,它只是顯示它,做。你的代碼不能以什麼方式工作?你的消息應該被添加到數據庫中,並且可以在重定向之後顯示。

+1

解決了問題,顯然它是下一個視圖(顯示空間索引)的錯誤。我正在給你的答案是正確的 –

0

我有同樣的問題,只是想澄清,這只是工作'

def first_view(request) 
    ... 
    messages.info(request, "Some info message") 
    ... 
    return redirect('second_view') 

def second_view(request) 
    ... 
    return render_to_response('template.html',{},context_instance=RequestContext(request)) 

    -> will correctly display the message