首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在URL中的python瓶中加载静态文件

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

Stack Overflow用户
提问于 2014-12-13 23:02:42
回答 2查看 2.8K关注 0票数 3

我正在开发python瓶中的Python应用程序。如果我在1LVL深URL上,比如/dashboard、/rules或/page,这个应用程序就能正常工作。但是,如果我深入到/指示板/概述或/rules/ruleone或/page/测试CSS、JS、字体和图像,就会失败。:(

HTML源代码仍然指向/assets/,但是如果我在/rules/ruleone这样的URL上,正确的路径应该是../资产或./资产,对吗?path /assets/只在第一级工作,但在更深层次的lvl上不起作用,换句话说: but不使静态文件路径适应当前目录。我该怎么解决这个问题?

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

我的代码(简化):

代码语言:javascript
复制
#!/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

资产

  • css
  • js
  • ..。

视图

  • secure_page.tpl
  • footer.tpl
  • header.tpl
  • ..。

server.py

我希望有人能帮我解决这个问题,谢谢各位,我爱你!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-12-16 20:54:46

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

代码语言:javascript
复制
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/映像的

代码语言:javascript
复制
<link href="{{ url('assets', filepath='css/style.css') }}" rel="stylesheet" type="text/css"/>

动态菜单URL的操作(例如在导航中)是这样做的:

代码语言:javascript
复制
{{ url('/dashboard') }}

我希望这个信息能帮助那些和我一样疑神疑鬼的人。

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

票数 8
EN

Stack Overflow用户

发布于 2016-11-30 16:36:35

我确实使用:

代码语言:javascript
复制
@route('/css/<filename>')
def stylesheets(filename):
return static_file(filename, root='./static/css/')

在模板使用方面:

代码语言:javascript
复制
<link href="/css/style.css" rel="stylesheet">

可以对所有资产项(img、css和js)进行复制。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27464566

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档