Fillできたー!

以下、自分だけわかればいい的なぐりがき。
下記のソースで、当該ページのフォームにname=”wa”とでもしておけば、そこにwawawaと出るわけでござる。

#ちょとかきなおした。
コントローラに

        defaults={'wa':"wawawa"}
        return render('base.html', defaults= defaults)

こっちはbase.pyあたりでいいかも。render_genshiをwrapするふりして一部書き換えてるだけ。
dist-packagesの中を書き換えるのはかなりアレなので、アプリの中で書いています。

#Wrap render_genshi
def render_genshi(template_name, extra_vars=None, cache_key=None,
                  cache_type=None, cache_expire=None, method='xhtml',defaults=None):
    """Render a template with Genshi

    Accepts the cache options ``cache_key``, ``cache_type``, and
    ``cache_expire`` in addition to method which are passed to Genshi's
    render function.

    """
    # Create a render callable for the cache function
    def render_template():
        # Pull in extra vars if needed
        globs = extra_vars or {}

        # Second, get the globals
        globs.update(pylons_globals())

        # Grab a template reference
        template = globs['app_globals'].genshi_loader.load(template_name)

        #parserがある場合はFillする
        if parser == None:
            return literal(template.generate(**globs).render(method=method,
                                                             encoding=None))
        else:
            parser = FillingParser(defaults)
            src = literal(template.generate(**globs).render(method=method,
                                                             encoding=None))

            parser.feed(src)
            parser.close()
            return parser.text()
#        ここは元のコード
#        return literal(template.generate(**globs).render(method=method,
#                                                         encoding=None))

    return cached_template(template_name, render_template, cache_key=cache_key,
                           cache_type=cache_type, cache_expire=cache_expire,
                           ns_options=('method'), method=method)

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です