2012-04-18 9 views
1

Django에서 메시지 미들웨어를 사용하려고하는데 뷰에서 렌더링되지 않습니다. 내가보기에이 작업을 수행 할 때Django의 메시지 미들웨어가 템플릿에 표시되지 않습니다.

views.py

messages.success(request, 'Test message.') 
return render_to_response('base.html') 

template.html

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

는 : 내가 가진 무엇

for message in messages.get_messages(request): 
    print message 

는 모든 시간에 대한 메시지를 출력 나는이 함수를 마지막으로 사용한 이후 뷰를 호출 했으므로 메시지를 어딘가에 저장합니다. 그것은 단지 템플릿으로 보내지지 않습니다.

추가 정보 :

  • 장고 버전 = (1, 2, 3, '최종'는 0)
  • 난 TEMPLATE_CONTEXT_PROCESSORS에 'django.contrib.messages.context_processors.messages'를 추가했다. 참고 : Django 1.2부터 거기에 있어야하기 때문에 TEMPLATE_CONTEXT_PROCESSORS가 없으므로 방금 추가했습니다. 나는 이것이 제대로 작동하지 않을 수도 있고 이것이 문제가 될 수도 있다고 생각하지만 제대로 설정되었는지 확인하는 방법을 모른다.
  • 나는 그것을 설치하기 위해 https://docs.djangoproject.com/en/dev/ref/contrib/messages/을 계속했다.

답변

3

당신은 템플릿에 템플릿 상황에 맞는 프로세서를 사용할 수 있도록 (render_to_response 기본적으로 사용) 대신 ContextRequestContext와 템플릿을 렌더링 할 필요가있다. 도움이,

return render_to_response('base.html', context_instance=RequestContext(request)) 
+0

감사합니다,하지만 난 내가 TEMPLATE_CONTEXT_PROCESSORS에 'django.contrib.messages.context_processors.messages'을 추가 한 경우이 필요하지라고 생각하십시오 optional arguments section of the render_to_response docs 다음 변경 확인. 아니면 둘 다 필요합니까? – olofom

+0

'TEMPLATE_CONTEXT_PROCESSORS'에 추가하면 그것이 활성화되었음을 의미합니다. 템플릿에서'TEMPLATE_CONTEXT_PROCESSORS'에서 사용 된 모든 컨텍스트 프로세서를 실제로 만들려면 뷰에서'RequestContext'를 사용해야합니다. –

+2

또한'render' 단축키를 확인하십시오. https://docs.djangoproject.com/en/dev/topics/http/shortcuts/#render – Dor

관련 문제