Обмен сообщениями Django и наследование шаблонов - как его использовать? - PullRequest
2 голосов
/ 19 августа 2011

Прежде всего: Привет, ребята из StackOverflow :). Это мой первый пост здесь. Ладно, к делу: платформа обмена сообщениями Django не работает в моем маленьком приложении. У меня есть следующий макет:

  • base.html -> index.html (наследуется от base.html)
  • представление importcsv (которое пока ничего не делает, но хочет вернуться к index.html и отобразить там сообщение, например, "импортировать успешно")
  • в основном ванильный Django 1,3, OS X
  • наследование шаблонов работает довольно хорошо

И как бы я ни пытался, я не могу заставить работать сообщения. Я в основном скопировал и вставил примеры из документации Django, но безрезультатно.

На коду.

base.html (сокращено до основных):

<html>
<head>
    {% block extra-css %}
    {% endblock %}
</head>
<body>
{% if messages %}
<ul class="messages">
    {% for message in messages %}
    <li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
    {% endfor %}
</ul>
{% endif %}
</body>
</html>

index.html:

{% extends "base.html" %}

views.py: (rtr - это просто "import render_to_response as rtr")

def _importlegs(request):
    f = request.FILES['file']
    print "_importlegs"
    messages.info(request, "Test")
    return rtr('index.html', RequestContext(request))

В результате блок "messages" никогда не отображается. Неважно что я делаю.

1 Ответ

1 голос
/ 19 августа 2011

Убедитесь, что промежуточное ПО для сообщений находится в вашем MIDDLEWARE_CLASSES, а django.contrib.messages в вашем INSTALLED_APPS.Если это не так, выполните syncdb впоследствии, чтобы таблицы сообщений создавались в вашей базе данных.

Также попробуйте сделать {} вторым аргументом для rtr, чтобы RequestContext(request) стал третьим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...