про "модули" в файле шаблона в торнадо - PullRequest
1 голос
/ 21 февраля 2012

В демоверсиях торнадо, приложения под названием blog, в templates / home.html код выглядит так:

{% extends "base.html" %}

{% block body %}
{% for entry in entries %}
    {{ modules.Entry(entry) }}
{% end %}
<div><a href="/archive">{{ _("Archive") }}</a></div>
{% end %}

Я хочу знать, откуда берутся «модули».Я думаю, что это должно выглядеть так:

{% module Entry(entry) %}

, поэтому я изменил код, и он работает.

Кто-то знает, откуда взялись "модули" в файле шаблона?Спасибо.

Ответы [ 2 ]

3 голосов
/ 12 декабря 2012

Вы можете найти комментарий к RequestHandler .__ init __:

# UIModules are available as both `modules` and `_modules` in the
# template namespace.  Historically only `modules` was available
# but could be clobbered by user additions to the namespace.
# The template {% module %} directive looks in `_modules` to avoid
# possible conflicts.

Я думаю, что это могут быть некоторые коды, написанные в старой версии торнадо :) Так что вместо этого мы должны использовать {% module%}.

1 голос
/ 09 марта 2012

в RequestHandler .__ init__:

self.ui["_modules"] = ObjectDict((n, self._ui_module(n, m)) for n, m in
                             application.ui_modules.iteritems())
self.ui["modules"] = self.ui["_modules"]

в RequestHandler.render_string:

args.update(self.ui)
args.update(kwargs)
return t.generate(**args)

RequestHandler является подклассом вашего обработчика, и в render_string есть модули.

...