如何在Pyramid / Pylon中返回javascript

时间:2012-06-29 05:37:21

标签: javascript python pyramid

如何在Pyramid / Pylon框架中返回一些带有视图callables的javascript代码或javascript文件?

2 个答案:

答案 0 :(得分:7)

您可以使用任何可调用的模板/视图执行此操作。它并没有那么不同。我仍然建议设置内容类型。

from pyramid.view import view_config

@view_config(name='javascript', renderer='templates/javascript.mako')
def my_js_view(request):
    request.response.content_type = 'application/javascript'
    return {... params ...}

它与其他观点没有什么不同。

答案 1 :(得分:3)

javascript的是什么?动态生成还是静态?

当静态时,只需使用static view将其作为CSS和图像提供。

如果是动态的,请使用template生成javascript文件并使用正确的内容类型进行投放;这是一个使用Chameleon text renderer的示例,但您当然可以使用自己喜欢的模板引擎:

@view_config(name='generated_javascript', renderer='templates/generated_javascript.txt')
def generated_javascript(request):
    request.response.content_type = 'text/javascript'
    # The returned dict holds items your template can access when
    # generating the javascript.
    return dict(foo='bar', spam='eggs')

请注意,我设置了content_type attribute on the Response object以确保浏览器识别您生成的JavaScript。

然后,您的模板可以访问您返回的dict中的值加上一些额外的system values,就像任何其他模板一样。

请注意,最佳做法是尽量减少动态JavaScript的使用,并尽可能静态地使用它。任何(动态)上下文信息都应该包含在您生成的HTML中,然后静态JavaScript可以加载和使用。然后,您的静态JavaScript可以被所有访问者缓存,从而显着提高性能。有关如何实现这一目标的一些提示,请参阅Chameleon templates for javascript files?