在Django中显示简单消息

时间:2013-01-21 04:54:38

标签: django

我想知道在Django中显示简单消息的正确方法是什么。我指的是不值得创建专用模板的简单消息。类似:错误的激活密钥,您的帐户已被激活,您可能会开始使用它等等。如果我为每条错误/信息消息创建一个模板,我最终会创建数十个模板。

当然,我需要在当前应用的布局中显示这些消息。

请告知。

3 个答案:

答案 0 :(得分:4)

为什么不使用django message framework

您可以将其与任何模板一起使用

答案 1 :(得分:2)

您可以创建一个通用模板,该模板接受一个错误消息变量,然后显示该变量。显然,通过这种方法,您可以使用扩展等模板的所有功能。

{% inherit 'base.html' %}
{% block content %}
    {{ message }}
{% endblock %}

在视图中:

def foo_view(request):
    message = 'Some message here'
    data = {'message': message}
    return render_to_response('message_template.html', data)

答案 2 :(得分:2)

最好的方法是使用django消息框架,如Pradnya Mhatre所建议的那样。 我通常将消息放在基本模板中,如下所示:

<强> base.html文件:

{% block messages %}
  {% if messages %}
    {% for message in messages %}
      <div class="{{message.tags}} box">
        <p>
          {{ message|safe }}
        </p>
      </div>
    {% endfor %}
  {% endif %}
{% endblock %}

在视图中你可以放置:

django.contrib.messages.add_message(request,django.contrib.messages.ERROR,message))

您可以在此处输入ERROR,INFO和SUCCESS消息。

您的观点看起来像这样:

import django.contrib.messages
import django.shortcuts

def some_view(request):
    do_something()
    django.contrib.messages.add_message(request, django.contrib.messages.SUCCESS, 'It worked \o/')
    return django.shortcuts.render_to_response(
        'template_that_extends_base.html',
        {},
        context_instance=django.template.RequestContext(request))