python - 如何在 URL 的 python 瓶中加载静态文件

标签 python bottle

我正在 Python Bottle 中开发一个 python 应用程序。如果我在 1 级深层 URL(例如/dashboard 或/rules 或/page)上,该应用程序可以正常工作。但是,如果我像/dashboard/overview 或/rules/ruleone 或/page/test 那样深入,CSS、JS、字体和图像将失败。 :(

HTML 源代码仍然指向/assets/,但如果我在像/rules/ruleone 这样的 URL 上,正确的路径应该是像 ../assets 或 ./assets 这样的,对吧?路径/assets/仅适用于第一级,但不适用于更深的 lvls,换句话说:bottle 不会将静态文件路径适配到当前目录。我该如何解决这个问题?

我被这个问题困了好几天了,我真的希望有人能帮助我。 :(

我的代码(简化版):

#!/usr/bin/env python
import lib.bottle as bottle
from lib.bottle import route, template, debug, static_file, TEMPLATE_PATH, error, auth_basic, get, post, request, response, run, view, redirect, SimpleTemplate, HTTPError, abort
import os, sys, re

@route('/dashboard')
@view('secure_page')
def show__page_dashboard():
    return dict(page = 'Dashboard')

@route('/rules/<rule>')
@view('secure_page')
def show_page_rules_more(rule):
    return dict(page = rule)

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

TEMPLATE_PATH.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), "view")))

bottle.debug(True)
from lib.bottledaemon import daemon_run
if __name__ == "__main__":
    daemon_run()

所以我的应用程序以守护进程模式运行。结构是:

  • Bottle .py
  • bottledaemon.py

Assets

  • CSS
  • js
  • ...

查看

  • secure_page.tpl
  • 页脚.tpl
  • 标题.tpl
  • ...

服务器.py

我希望有人能帮我解决这个问题,在此先感谢大家,我爱你们! <3

最佳答案

好的,我找到了解决问题的方法。 Bottle 提供了一个 URL 标签来动态构建 URL。

from bottle import url

@route('/dashboard')
@view('secure_page')
def show__page_dashboard():
    return dict(page='Dashboard', url=url)

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

这就是我加载 CSS/JS/图像的方式

<link href="{{ url('assets', filepath='css/style.css') }}" rel="stylesheet" type="text/css"/>

动态菜单 URL(例如在导航中)是这样完成的:

{{ url('/dashboard') }}

我希望这些信息能帮助那些和我有同样问题的人。

在 v0.12 和 v0.13dev 上测试

关于python - 如何在 URL 的 python 瓶中加载静态文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27464566/

相关文章:

python - chrome 上的 DevTools 远程调试无法与 headless-chrome 正常工作

Python - 列表中的最佳匹配

javascript - CORS 请求在 Firefox 中不起作用,但在 Chrome 和 Safari 中起作用

Python+mako Unicode问题

python - 如何自动将文件生成到与我的 Colab 笔记本相同的 Google Drive 文件夹?

python - 无法加载 mod_wsgi : Symbol not found: __Py_FalseStruct

python - 文件名、目录名或卷标语法不正确

python - 500 内部服务器错误 : Python Bottle API

python - Bottle python程序在开发环境中运行,但不在现场环境中

python - 在共享虚拟主机上运行 Bottle 服务器