Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在URL';s_Python_Bottle - Fatal编程技术网

Python 如何在URL';s

Python 如何在URL';s,python,bottle,Python,Bottle,我正在用python瓶子开发python应用程序。如果我在/dashboard或/rules或/page等1层深度的URL上,该应用程序运行良好。但是,如果我深入到/dashboard/overview或/rules/ruleone或/page/test,CSS、JS、字体和图像将失败( HTML源代码仍然指向/assets/,但是如果我使用的是像/rules/ruleone这样的URL,那么正确的路径应该是../assets或./assets。对吗?路径/assets/只在第一级工作,而不在更

我正在用python瓶子开发python应用程序。如果我在/dashboard或/rules或/page等1层深度的URL上,该应用程序运行良好。但是,如果我深入到/dashboard/overview或/rules/ruleone或/page/test,CSS、JS、字体和图像将失败(

HTML源代码仍然指向/assets/,但是如果我使用的是像/rules/ruleone这样的URL,那么正确的路径应该是../assets或./assets。对吗?路径/assets/只在第一级工作,而不在更深的LVL上工作,换句话说:瓶子不会将静态文件路径调整到当前目录。我如何解决这个问题

这个问题我已经纠结了好几天了,我真的希望有人能帮我(

我的代码(简化):

!/usr/bin/env python
将lib.瓶子作为瓶子导入
从lib.battle导入路由、模板、调试、静态文件、模板路径、错误、基本身份验证、获取、发布、请求、响应、运行、查看、重定向、SimpleTemplate、HTTPError、中止
导入操作系统、系统、re
@路由(“/仪表板”)
@视图(“安全页面”)
def显示页面仪表板():
返回指令(页面=‘仪表板’)
@路由(“/rules/”)
@视图(“安全页面”)
def显示页面规则更多(规则):
返回指令(第页=规则)
@路由(“/assets/”)
def服务器_静态(文件路径):
返回静态_文件(filepath,root='/var/myapp/assets')
模板\u PATH.insert(0,os.PATH.abspath(os.PATH.join(os.PATH.dirname(\u文件\u),“视图”))
beggle.debug(True)
从lib.battledaemon导入daemon_运行
如果名称=“\uuuuu main\uuuuuuuu”:
daemon_run()
因此,我的应用程序以守护程序模式运行。结构为:

解放党

  • 瓶子
  • 瓶装水
资产

  • css
  • js
看法

  • 安全页面.tpl
  • footer.tpl
  • header.tpl
server.py


我希望有人能在这方面帮助我,提前谢谢各位,我爱你们!好吧,我找到了解决问题的方法。瓶子提供了一个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')
我希望这些信息能帮助那些和我一样纠结于同样问题的人

在v0.12和v0.13dev上测试,我确实使用:

@route('/css/<filename>')
def stylesheets(filename):
return static_file(filename, root='./static/css/')
@route('/css/'))
def样式表(文件名):
返回静态_文件(文件名,根='。/static/css/)
在模板使用中:

<link href="/css/style.css" rel="stylesheet">


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

如何在标记中访问静态文件?如果以绝对方式访问静态文件,则无论活动页面的URL如何,都不应更改。decorator
@route()
也可以替换为
@get()
decorator。我在这里也遇到了同样的问题,但我有很多类似于您的/dashboard的路线,它们的返回值是从其他一些函数计算出来的,修改它们以包含url有点复杂,有没有直接的方法将默认值传递给模板,顺便说一句,我使用的是jinja2模板,而不是瓶子的简单temp迟到
{{ url('/dashboard') }}
@route('/css/<filename>')
def stylesheets(filename):
return static_file(filename, root='./static/css/')
<link href="/css/style.css" rel="stylesheet">