Jinja2 里的命名空间(import)是怎么回事?

2016-05-01 23:36:45 +08:00
 MyLeoWind
我正在看《 Flask Web 开发》,都没有在 flask app 里 import 的方法,也能写到模板里使用呢?
3671 次点击
所在节点    Python
7 条回复
hxndg
2016-05-02 00:34:27 +08:00
我没有看明白你的意思哈,什么叫做 import 的方法?同一个包内的化,都在__inti__.py 里可以直接看到的阿?
vJianZhen
2016-05-02 00:50:28 +08:00
楼主的意思应该是在 Jinja2 里面有些方法,比如 url_for()没有 import 进来就直接用了,似乎不合道理。 JInja2 里的 import 是 Jinja2 的语法,跟 Python 里头的不是一个东西。至于你说为什么没有 import 就用了,那应该是用 Flask 创建 app 时候做了一些事,以及一个叫做请求上下文的东西。
MyLeoWind
2016-05-02 09:12:12 +08:00
@vJianZhen 嗯我说的是 python 的 import 不是模板的 import 。可能我需要看源码+试验一下。
vJianZhen
2016-05-02 10:23:37 +08:00
@MyLeoWind 我还没发现 Python 中没有 import 直接使用的例子,麻烦上代码
donghouhe
2016-05-02 11:16:11 +08:00
可能书里代码精简了那部分,另外很可能 jinja 本就可以用一些过滤器啦函数啦,那些并不属于 python ,属于 jinja 自带,不要被相同的函数名字迷惑了
3b295
2016-05-03 09:42:31 +08:00
书里有
@main.app_context_processor
def inject_permission():
return dict(Permission=Permission)
这里 Permission 就可以在模板里用了
flask 默认也会加一些函数进 jinja2 里,所以 url_for 这种可以直接用

给个链接吧
http://dormousehole.readthedocs.io/en/latest/templating.html
MyLeoWind
2016-05-03 10:55:25 +08:00
@3b295 谢谢,@vJianZhen 给我的提示就是这样的,只是自己没找到文档验证。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/275723

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX