代码之家  ›  专栏  ›  技术社区  ›  Silver Light

django1.2中的消息框架有问题

  •  0
  • Silver Light  · 技术社区  · 14 年前

    我正在运行django1.2beta并尝试新特性:消息框架。

    http://docs.djangoproject.com/en/dev/ref/contrib/messages/

    messages 变量为空。我仔细检查了所有的设置,它们好像和手册上的一样。有什么问题吗?

    设置.py

    MIDDLEWARE_CLASSES = (
        'django.middleware.common.CommonMiddleware',
        'django.contrib.sessions.middleware.SessionMiddleware',
        'django.contrib.messages.middleware.MessageMiddleware', #send messages to users
        'django.middleware.locale.LocaleMiddleware',
        'django.contrib.auth.middleware.AuthenticationMiddleware',
    
        #debug tool
        'debug_toolbar.middleware.DebugToolbarMiddleware',
    )
    
    TEMPLATE_CONTEXT_PROCESSORS = (
        'django.contrib.messages.context_processors.messages', #send messages to users
        'django.core.context_processors.auth',
    )
    
    #Store messages in sessions
    MESSAGE_STORAGE = 'django.contrib.messages.storage.session.SessionStorage';
    
    INSTALLED_APPS = (
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        #'django.contrib.sites',
        'django.contrib.admin',
        'django.contrib.messages', 
        'debug_toolbar',
    
        #my apps
        #...
    )
    

    视图.py

    def myview(request):
    
        from django.contrib import messages
    
        messages.error(request, 'error test');   
        messages.success(request, 'success test');   
    
        return render_to_response('mytemplate.html', locals()); 
    

    {% for message in messages %}
            {{ message }}<br />
    {% endfor %}
    

    在模板中不输出任何内容。

    1 回复  |  直到 14 年前
        1
  •  5
  •   Daniel Roseman    14 年前

    你需要使用 RequestContext 在你的电话里 render_to_response .

    return render_to_response('mytemplate.html', locals(),
                              context_instance=RequestContext(request))
    

    看到下面几个屏幕上的注释了吗 this documentation section