2014-02-06 3 views
0

Я следил за docs, чтобы импортировать необходимые вещи в мои настройки, виды и шаблон. Однако никаких сообщений не появляется.Django 1.6 сообщения не отображаются

MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware', 
    'django.contrib.sessions.middleware.SessionMiddleware', 
    'django.middleware.csrf.CsrfViewMiddleware', 
    'django.contrib.auth.middleware.AuthenticationMiddleware', 
    'django.contrib.messages.middleware.MessageMiddleware', 
    # Uncomment the next line for simple clickjacking protection: 
    'django.middleware.clickjacking.XFrameOptionsMiddleware', 
) 

INSTALLED_APPS = (
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.sites', 
    'django.contrib.messages', 

Пример вид:

from django.contrib import messages 

def add_news(request): 
    if request.method == 'POST': 
     form = NewsForm(request.POST) 
     if form.is_valid(): 
      form.save() 
      messages.info(request, "News was added") 
      return HttpResponseRedirect('/') 

    if request.method == 'GET': 
     form = NewsForm() 
     args = {} 
     args.update(csrf(request)) 
     args['form'] = form 
     return render_to_response('news/add_news.html', args) 

В base.html у меня есть:

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

Как следует отладить это?

+0

Как вы отображаются сообщения в шаблоне? –

+0

Кроме того, у вас могут возникнуть проблемы с компоновкой блоков POST/GET; если пользователь отправляет форму, но не проверяет наличие ошибки, поскольку ответ не возвращается –

+0

Ну, я добавил блок сообщений. Новостные статьи создаются без проблем, поэтому я предполагаю, что формы проверяются. – qliq

ответ

2

messaging framework использует сообщение context_processor для отправки сообщений по шаблону. Чтобы убедиться, что переменные из ваших контекстных_процессоров фактически добавлены в контекст, с которым вы делаете свой шаблон, вам нужно использовать RequestContext.

Если вы используете контекстный процессор, ваш шаблон должен быть визуализирован с помощью RequestContext. В противном случае убедитесь, что сообщения доступны для контекста шаблона.

Вы используете метод render_to_response, который не делает этого по умолчанию. Вы либо должны указать использование RequestContext или использовать функцию render вместо которой делает это по умолчанию

return render_to_response('news/add_news.html', 
         args, 
         context_instance=RequestContext(request)) 
+1

Добавление 'context_instance = RequestContext (request)' решило проблему. Фактически return render (request, 'news/add_news.html', args) выглядит очень ясно, поэтому было бы неплохо добавить его в ответ. Большое спасибо Тимми. – qliq

Смежные вопросы