3

I recently upgraded to Django 1.3 and I want to start using the Messages system.

I have added my Middleware, Template context processors and also messages into the 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',
)

I'm simply just testing based on a view that makes a simple calculation.

in the admin, the messages show up, however when trying to render them in my base.html file I get the following error.

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

and in the stack it fails here.

{% for message in messages %}

I have also removed the for statement and the I still get the following error, nothing more

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

Any ideas?

2
  • Last time something like this happened to me, there was a problem in my view. So to quote DrTyrsa, show your view. Commented Sep 27, 2011 at 14:05
  • did you get solution to this issu am also stuck with this issue Commented Jan 20, 2015 at 12:04

2 Answers 2

2

I just encountered this problem. I had included the following in my context processor:

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

Make sure you are not setting messages in the context, as it is set in the correct manner by django.contrib.messages.context_processors.messages.

Sign up to request clarification or add additional context in comments.

Comments

-1

How did you MIDDLEWWARE_CLASSES and TEMPLATE_CONTEXT_PROCESSORS in settings.py, it must look like :

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"
)

And in INSTALLED_APPS :

'django.contrib.messages'

And in your template (did you forgot the if? ):

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

I hope it will help you.

2 Comments

Copy and pasted my configuration, also tried moving some items around, still no luck
Are you using {% if messages %} in your template view?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.