2011-09-27 4 views
3

최근 Django 1.3으로 업그레이드되었으며 메시지 시스템을 사용하기 시작했습니다.Django 메시지 프레임 워크가 템플릿 루프에서 작동하지 않습니다.

나는 단순히 간단한 계산을하게 뷰를 기반으로 테스트있어 INSTALLED_APPS

MIDDLEWARE_CLASSES = (
    'django.middleware.cache.UpdateCacheMiddleware', 
    'django.middleware.common.CommonMiddleware', 
    'django.contrib.sessions.middleware.SessionMiddleware', 
    'django.contrib.auth.middleware.AuthenticationMiddleware', 
    'django.middleware.locale.LocaleMiddleware', 
    'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware', 
    'django.middleware.csrf.CsrfViewMiddleware', 
    'django.middleware.csrf.CsrfResponseMiddleware', 
    'facebook.djangofb.FacebookMiddleware', 
    'annoying.middlewares.RedirectMiddleware', 
    'django.contrib.messages.middleware.MessageMiddleware', 
    'django.middleware.cache.FetchFromCacheMiddleware', 
) 

TEMPLATE_CONTEXT_PROCESSORS = (
    "django.core.context_processors.auth", 
    "django.core.context_processors.debug", 
    "django.core.context_processors.i18n", 
    "django.core.context_processors.media", 
    "django.core.context_processors.request", 
    "django.contrib.messages.context_processors.messages", 
) 

INSTALLED_APPS = (
    'django.contrib.messages', 
) 

에 내 미들웨어, 템플릿 상황에 맞는 프로세서와도 메시지를 추가했습니다.

관리자가 메시지를 표시하지만 내 base.html 파일에서 렌더링하려고 할 때 다음 오류가 발생합니다.

Caught TypeError while rendering: 'module' object is not iterable 

그리고 스택에서 실패합니다.

{% for message in messages %} 

는 또한 문 그리고 난 여전히 다음과 같은 오류가 발생, 아무것도 더

<module 'django.contrib.messages' from '/Users/ApPeL/.virtualenvs/mysite.com/lib/python2.7/site-packages/django/contrib/messages/__init__.py'> 

모든 아이디어를 제거했다?

+1

보기를 표시하십시오. – DrTyrsa

+0

지난 번에 이런 일이 일어 났을 때 제 생각에는 문제가있었습니다. DrTyrsa의 말을 인용하여 여러분의 의견을 제시하십시오. –

+0

이 문제에 대한 해결책을 얻었습니까? –

답변

-1

는 MIDDLEWWARE_CLASSES와 settings.py에서 TEMPLATE_CONTEXT_PROCESSORS, 그것은 같이 있어야 않았다 방법 :

MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware', 
    'django.contrib.sessions.middleware.SessionMiddleware', 
    'django.contrib.auth.middleware.AuthenticationMiddleware', 
    'django.contrib.messages.middleware.MessageMiddleware', 
    'django.middleware.csrf.CsrfViewMiddleware', 
    'django.middleware.csrf.CsrfResponseMiddleware', 
    'django.middleware.locale.LocaleMiddleware', 
    'django.contrib.messages.middleware.MessageMiddleware', 
) 

TEMPLATE_CONTEXT_PROCESSORS = (
    "django.contrib.auth.context_processors.auth", 
    "django.core.context_processors.i18n", 
    "django.core.context_processors.request", 
    "django.core.context_processors.media", 
    "django.core.context_processors.static", 
    "django.contrib.messages.context_processors.messages" 
) 

그리고 INSTALLED_APPS에 :

'django.contrib.messages' 

그리고 템플릿에 (당신은을 경우 잊었습니까?) :

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

도움이되기를 바랍니다.

+0

내 구성을 복사하여 붙여 넣었으며 일부 항목을 움직여 보았지만 여전히 운이 없었습니다 – ApPeL

+0

템플릿보기에서 {% if messages %}를 사용하고 있습니까? – Sebastien

2

방금이 문제가 발생했습니다. 이 django.contrib.messages.context_processors.messages하여 올바른 방식으로 설정되어

from django.contrib import messages 
... 
def allrequests(request): 
    ctx = { 
     ... 
     'messages': messages 
    } 
    return ctx 

, 당신은 상황에서 messages 설정되지 않았는지 확인 : 나는 내 상황에 맞는 프로세서에 다음을 포함했다.

관련 문제