【问题标题】:path resolution in jinja2 templatesjinja2 模板中的路径解析
【发布时间】:2012-04-01 10:32:49
【问题描述】:

我正在使用带有 jinja2 模板的cherrypy,来自“views”目录,如下所示:

env = Environment(loader = FileSystemLoader('views'))

当我渲染索引页面时:

index = env.get_template('index.html')

它显示得很好,但引用的 css、javascripts 和图像(在 index.html 中)没有解析:

<head>
    <link rel="stylesheet" type="text/css" media="screen" href="css/web.css">
    <link rel="shortcut icon" type="image/png" href="img/favicon.png">
    <script src="js/jquery-1.7.1.min.js" type="text/javascript" charset="utf-8"></script>
</head>

文件系统的组织方式如下:views/css、views/js、views/img

什么是获得工作文件分辨率的可靠方法?

【问题讨论】:

    标签: python templates jinja2


    【解决方案1】:

    Jinja 模板中的静态路径与 Jinja 无关。这都是关于 Web 服务器的配置的。如果您使用的是flask,请使用SharedDataMiddleware dispatcher 处理静态文件,即

    from werkzeug import SharedDataMiddleware
    app.wsgi_app = SharedDataMiddleware(app.wsgi_app,
                                        { '/static': '/path/to/static/files' } )
    

    静态目录的结构:

    .../static/
               img/
               css/
               js/
               etc/
    

    不要忘记在路径的开头添加斜杠:

    <link rel="shortcut icon" type="image/png" href="/static/img/favicon.png">
    

    强烈建议不要在生产服务器上使用SharedDataMiddleware。 Nginx 是正确的。

    【讨论】:

    • 我的设置有点不同,但帮助通过了:我的静态路径的开头没有斜线。现在一切正常,+1!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-07
    • 2021-04-09
    • 2020-12-01
    • 2022-10-17
    • 2016-04-06
    • 2012-01-20
    相关资源
    最近更新 更多