【问题标题】:Django messaging & template inheritance - how to use it?Django 消息传递和模板继承 - 如何使用它?
【发布时间】:2011-10-30 14:18:07
【问题描述】:

首先:大家好 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))

结果是,“消息”块永远不会显示。不管我做什么。

【问题讨论】:

    标签: django django-templates


    【解决方案1】:

    确保消息中间件在您的MIDDLEWARE_CLASSES 中,并且django.contrib.messages 在您的INSTALLED_APPS 中。如果不是,请稍后执行 syncdb,以便在您的数据库中创建消息表。

    另外,尝试将{} 作为rtr 的第二个参数,以便RequestContext(request) 成为第三个。

    【讨论】:

    • 所以,经过测试,没有用。该配置从一开始就完全启用(尽管如此,还是做了一个syncdb),rtr("..", {}, RC(request))rtr("..", RC(request)) 都不起作用。无论如何谢谢。还有什么想法吗? :) ...我还删除了模板继承,只是为了确保测试运行 - 没有效果。
    • 如果你尝试做context_instance=RequestContext(request)会怎样?您也可以尝试使用 message.info 设置消息,但不迭代消息,而是将 {% debug %} somewhere in your template and then seeing if the messages 变量放在您的上下文中。
    • 进展。我在模板中添加了{% debug %},并将消息更改为“yadda”。在出现的整个文本中没有任何痕迹,我也找不到“消息”变量。现在我真的不知道发生了什么。之后,我只是在上下文字典中设置了一些属性,然后……嗯,也无处可寻。超级棒。这有点令人沮丧。但是谢谢,你帮助我! (即使现在只是一小步;)
    • 啊,有趣。因此,似乎上下文没有正确传递给您的模板,并且消息或模板继承都不是问题。确实很奇怪。
    • 可能很有趣。但是没有乐趣:( ...我现在推迟了这个问题,专注于其他一些功能。也许灵感会打到我。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-24
    • 2013-01-09
    • 2011-04-12
    相关资源
    最近更新 更多