【问题标题】:Python: Accessing Renderer Global in PyramidPython:在 Pyramid 中访问全局渲染器
【发布时间】:2015-12-25 06:49:57
【问题描述】:

我想从金字塔中的 mako 模板访问 GMAPS_API_KEY 全局渲染器。我不断收到GMAPS_API_KEY 未定义的错误:

 ...
 File "views/header.html", line 10, in render_body
    <script src="https://maps.googleapis.com/maps/api/js?key=${GMAPS_API_KEY}&sensor=true"></script>
  File "/scratch/temp/venvs/py2.7.10/lib/python2.7/site-packages/mako/runtime.py", line 226, in __str__
    raise NameError("Undefined")
NameError: Undefined

我有 3 个文件(我省略了很多东西):

header.html:

 <script src="https://maps.googleapis.com/maps/api/js?key=${GMAPS_API_KEY}&sensor=true"></script> <!-- ERROR HERE -->

map.mak:

<%include file="header.html"/>

webapp.py

from pyramid.events import subscriber
from pyramid.events import BeforeRender

@subscriber(BeforeRender)
def add_global(event):
    event['GMAPS_API_KEY'] = get_gmaps_key()

def show_map(request):
    return render_to_response('views/map.mak', {},request=request)

config = Configurator()
config.include('pyramid_mako')
config.add_route('map', '/')
config.add_view(show_map, route_name='map')
app = config.make_wsgi_app()
host, port = '127.0.0.1', 8080
server = make_server(host, port, app)
server.serve_forever()

【问题讨论】:

    标签: python pyramid mako


    【解决方案1】:

    @subscriber 要求您在包含行 @subscriber 的包上调用 config.scan(),或者您需要将装饰器替换为对 config.add_subscriber() 的调用,如 Pyramid 配置器的文档中所示:@987654321 @

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-12
      • 1970-01-01
      • 1970-01-01
      • 2020-01-02
      • 1970-01-01
      • 1970-01-01
      • 2012-01-18
      • 2014-05-22
      相关资源
      最近更新 更多