【问题标题】:Static files not being served on Bottle in PythonPython 中没有在 Bottle 上提供静态文件
【发布时间】:2012-05-15 20:09:57
【问题描述】:

我正在尝试设置一个应用程序,该应用程序采用模板 HTML 文件并对其进行实时修改。它在一定程度上可以正常工作,但页面上的图像和 CSS 没有被提供,并且在请求它们时控制台上会出现 HTTP 500 错误。

这是我的目录结构

Server/
    assets/
        css/
            img/
            jquery.css
            kickstart.css
            zellner.css
        js/
            jquery.min.js
            kickstart.js
        style.css
        tb_404.png
        tbrun1.png
        tbservers.png
    403.html
    404.html
    500.html
    appid
    index.html
    maintenance.html
    server.log
    server.py

这就是我在 server.py 中设置路由的方式:

@error(403)
def error403(error):
    return static_file("403.html")

@error(404)
def error404(error):
    return static_file("404.html")

@error(500)
def error500(error):
    return static_file("500.html")

@route('assets/<filepath:path>')
def server_static(filepath):
    return static_file(filepath, root='assets')

在我的 html 文件中,文件是这样链接的:

<script type="text/javascript" src="assets/js/jquery.snippet.min.js"></script>

可能是因为静态资源位于 assets/ 的子​​目录中吗?还是我完全误解了如何使用 static_file?

这是我在 Python 控制台上遇到的错误类型:

[07/May/2012 10:51:05] "GET /tempus/23 HTTP/1.1" 200 4501 <h1>Critical error while processing request: /tempus/assets/js/jquery.snippet.min.js</h1>

我不明白为什么它会路由到 /tempus/assets/ ...

有什么帮助吗?谢谢!

【问题讨论】:

    标签: javascript python css bottle


    【解决方案1】:

    您的 @route 装饰器对于 serve_static 不正确。

    它应该是@route('/assets/')

    【讨论】:

      【解决方案2】:

      您必须将文件的完整路径放在 root= 中,这取决于程序运行的位置。 看看这个:http://bottlepy.org/docs/dev/tutorial.html?highlight=static_file#tutorial-static-files

      【讨论】:

      • 这个。路径是相对于工作目录的,而不是相对于服务器的 python 模块。 root=os.path.join(os.path.dirname(__file__), 'static') 对我有用
      【解决方案3】:

      我在提供静态文件时也遇到了问题。这是我的解决方案:

      @route('/static/:filename#.*#')
      def send_static(filename):
          return static_file(filename, root='./static/')
      

      当您想要访问静态文件时,例如。一个模板文件:

      @route('/')
      def index():
          output = template('static/index.tpl')
          return output
      

      【讨论】:

      • 救了我!正确答案!谢谢!
      猜你喜欢
      • 1970-01-01
      • 2013-02-19
      • 2017-01-27
      • 2015-06-04
      • 2023-03-06
      • 2013-01-13
      • 2021-10-31
      • 1970-01-01
      • 2012-12-03
      相关资源
      最近更新 更多