1

ビューでモジュールを使用するにはどうすればよいですか? たとえば、markdownモジュールを使用しようとしているので、コントローラーにインポートします。

from gluon.contrib.markdown.markdown2 import markdown

そして私はresponse.renderを使用します

return response.render('default/main.html', locals())

しかし、ビューでアクセスしようとすると、

{{=markdown(post.message)}}

定義されていないというエラーが表示されます。

<type 'exceptions.NameError'> name 'markdown' is not defined

モジュールをビューに渡すにはどうすればよいですか? locals()それを行うための機能に代わるものはありますか?

補足として、ビューにアクセスしてビューからアクセスできますdbsession、これはビューにインポートされているためmodelsですか?

Web2Py Version 1.99.7 (2012-03-04 22:12:08) stable

更新:モデルにインポートするdb.pyと修正されるようです。これを行うより良い方法はありますか?

4

1 に答える 1

4

記録のためだけに。

locals() を使用するのは得策ではありません

locals を response.render に渡す代わりに、ビューをレンダリングするために使用できるようにするキーを使用して辞書を作成することをお勧めします。

その辞書にマークダウンへの参照を含めることもできます

from gluon.contrib.markdown.markdown2 import markdown
mydict = dict(markdown=markdown, anotherkey=anothervalue)
return response.render("path/to/view", mydict)

locals() を mydict に拡張しようとしないでください。これを試みると、問題が発生します。

また、デフォルトの web2py 動作をそのまま使用することもできます

from gluon.contrib.markdown.markdown2 import markdown
response.view = "path/to/view"
return dict(markdown=markdown, anotherkey=anothervalue)

もう 1 つのオプションは、モデル ファイルにマークダウンをインポートすることです。

于 2012-03-13T07:38:02.537 に答える