Skip to main content
 首页 » 编程设计

python之jinja2 模板中的路径解析

2025年05月04日13webabcd

我将 cherrypy 与来自“views”目录的 jinja2 模板一起使用,如下所示:

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

当我呈现索引页面时:

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

它显示正常,但引用的 css、javascript 和图像(在 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

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

请您参考如下方法:

Jinja 模板中的静态路径与 Jinja 无关。这都是关于网络服务器的配置。如果您使用的是 Flask,请为静态文件使用 SharedDataMiddleware 调度程序,即

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 是对的。