【问题标题】:What is the way to reference an image from within a bottle template?从瓶子模板中引用图像的方法是什么?
【发布时间】:2018-09-24 03:47:02
【问题描述】:

在瓶子模板文件中,引用静态文件的方法是什么?比如这个?

<body background='/static/img/digital.gif'>

为什么上面的相关文件加载图片失败? 我怎样才能正确引用它?如果我尝试如下:

<body background="{{ static_file( 'digital.gif', root='./static/img' }}">

图像也无法渲染。

为什么即使不使用'static_file'函数,Bottle 也无法渲染图像?

【问题讨论】:

  • Guys in Bottle 我如何引用静态文件?
    我的图片使用 './static/img'
  • 我的 DocumentRoot 是 '/home/nikos/public_html' 为什么连我都看不到 superhost.gr/static/img/digital.gif 的图像?图片位于“/home/nikos/public_html/static/img/”文件夹中
  • 您绝对应该阅读整个 Bottle 教程。 bottlepy.org/docs/dev/tutorial.html#routing-static-files
  • 我已阅读此部分,但我无法通过 url 访问静态图像,也无法使用 static_file 函数。你能帮忙吗?

标签: python bottle


【解决方案1】:

您应该向应用程序添加一个路由,该路由将在请求时返回静态文件。然后将html中的路径作为普通路径使用。

所以添加这个:

@app.route('/static/<filepath:path>')
def server_static(filepath):
    return static_file(filepath, root='/path/to/static')

然后访问:http://localhost:8080/static/file.txt 将返回 '/path/to/static/file.txt'。

“/path/to/static”的子文件夹也可以访问。

【讨论】:

  • 返回静态文件是什么意思?我只想在浏览器中显示图像。我需要一个功能吗?我正在使用 Apache 生产服务器而不是嵌入式开发服务器,例如,我什至无法使用 superhost.gr/static/img/digital.gif。路径是正确的,我只是不明白为什么文件没有显示在浏览器中。如果 url 不能在浏览器中查看,Bottle 会怎么显示呢?请告诉他们你想让我尝试什么!
  • 好的,那么你不需要这个,但你必须配置apache来提供与webapp分开的静态文件?像在这里完成的事情:webpy.org/cookbook/staticfiles。 superhost.gr/static/img/digital.gif 中的“404 Not Found”来自瓶子。并且是正确的,因为它没有定义路线。但是如果你正确配置 apache(这样它就知道 '/static/' 子文件夹是从文件系统提供的),那么瓶子根本不会收到请求。
  • 所以我必须在我的 httpd-vhosts.conf 中添加“别名 /static /home/nikos/public_html/static”?您能否为我详细说明导致此错误的原因?为什么 Bottle 想要接管静态文件服务而不让 Apache 做呢?当我使用 Flask 时,我不需要这样的分离吗?为什么 Bottle 要处理静态文件并将其视为路由?
  • 这不是瓶子的问题。您甚至可以尝试删除它,或其他任何方式。如果您正确配置 apache,则对静态文件的请求应直接通过 apache 并返回文件系统文件。 Apache 配置应该告诉 apache 仅在请求静态文件以外的内容时才要求 Bottle 进行请求处理。在这里查看类似的 apache 设置问题stackoverflow.com/questions/24739925/…
  • 是的,它现在可以明确告诉 Apache 如何处理“静态”文件夹,谢谢!只是当我使用 Flask 时,我不必做出这种区分。 Apache 在那里为他们服务。
【解决方案2】:

我正在尝试弄清楚如何始终通过 ssh 和 'tail -f error_log' 启用错误输出到浏览器而不是 logginf ?

在开发实例中,我们刚刚调试 =True,现在在生产服务器中?这是我的配置:

DocumentRoot /home/nikos/public_html

<Directory /home/nikos/public_html>
    Require all granted
</Directory>


Alias /static /home/nikos/public_html/static

<Directory /home/nikos/public_html/static>
    Options +Indexes
</Directory>


WSGIPassAuthorization On

WSGIDaemonProcess clientele user=nikos group=nikos home=/home/nikos/public_html
WSGIScriptAlias /clientele /home/nikos/public_html/clientele.py process-group=clientele application-group=%{GLOBAL}

WSGIDaemonProcess downloads user=nikos group=nikos home=/home/nikos/public_html
WSGIScriptAlias /downloads /home/nikos/public_html/downloads.py process-group=downloads application-group=%{GLOBAL}

WSGIDaemonProcess www user=nikos group=nikos home=/home/nikos/public_html
WSGIScriptAliasMatch ^/(?!phpmyadmin) /home/nikos/public_html/www.py process-group=www application-group=%{GLOBAL}

我还想知道如何获取在身份验证提示中输入的 authuser 值,以便在输入时存储它。 request.auth.user' 不会返回它 norrequest.auth.username'。

【讨论】:

    猜你喜欢
    • 2013-08-11
    • 1970-01-01
    • 2016-12-01
    • 2012-07-04
    • 1970-01-01
    • 1970-01-01
    • 2011-08-09
    • 1970-01-01
    • 2016-01-14
    相关资源
    最近更新 更多