找不到 Bottle 应用程序中的静态文件 (404)

2024-04-03

我已经回顾了这里有关此问题的所有问题,回顾了瓶子教程,回顾了瓶子谷歌小组讨论,据我所知,我做的一切都是正确的。但不知何故,我无法正确加载 CSS 文件。我在静态文件上收到 404 错误,http://localhost:8888/todo/static/style.css没有找到,根据下面的目录结构,应该不是这样的。我使用的是 Bottle 0.11 版本(不稳定);我有什么遗漏的吗,或者这是 Bottle 中的一个错误?

我的目录结构:

todo/
   todo.py
   static/
      style.css

我的待办事项.py:

import sqlite3
from bottle import Bottle, route, run, debug, template, request, validate, static_file, error, SimpleTemplate

# only needed when you run Bottle on mod_wsgi
from bottle import default_app
app = Bottle()
default_app.push(app)

appPath = '/Applications/MAMP/htdocs/todo/'


@app.route('/todo')
def todo_list():

    conn = sqlite3.connect(appPath + 'todo.db')
    c = conn.cursor()
    c.execute("SELECT id, task FROM todo WHERE status LIKE '1';")
    result = c.fetchall()
    c.close()

    output = template(appPath + 'make_table', rows=result, get_url=app.get_url)
    return output

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

My html:

%#template to generate a HTML table from a list of tuples (or list of lists, or tuple of tuples or ...)
<head>
<link href="{{ get_url('css', filename='style.css') }}" type="text/css" rel="stylesheet" />
</head>
<p>The open items are as follows:</p>
<table border="1">
%for row in rows:
  <tr style="margin:15px;">
  %i = 0
  %for col in row:
    %if i == 0:
        <td>{{col}}</td>
    %else:
        <td>{{col}}</td>
    %end
    %i = i + 1
  %end
  <td><a href="/todo/edit/{{row[0]}}">Edit</a></td>
  </tr>
%end
</table>

我不太明白你的部署。这/Applications/MAMP/htdocs/路径,以及缺乏app.run在您的代码中,建议您在 Apache 下运行它。是生产部署吗?对于开发任务,您应该使用 Bottle 的内置开发服务器,您知道。添加单个app.run()快要结束时todo.py,你就完成了。

现在,如果您使用 Apache,最可能的根本原因是这一行:static_file(filename, root='./static')。使用 mod_wsgi,不能保证工作目录等于您的目录todo.py被放置。事实上,几乎永远不会。

您正在对数据库和模板使用绝对路径,对静态文件也这样做:

@route('/static/:filename#.*#', name='css')
def server_static(filename):
    return static_file(filename, root=os.path.join(appPath, 'static'))

接下来,我不明白你的应用程序安装在哪里。网址http://localhost:8888/todo/static/style.css建议挂载点是/todo,但路线为todo_list处理程序再次出现/todo。完整路径应该是http://localhost/todo/todo?您的应用程序是否有/处理程序?

我还建议避免对路径进行硬编码并将路径片段连接在一起。这会更干净:

from os.path import join, dirname
...
appPath = dirname(__file__)

@app.route('/todo')
def todo_list():
    conn = sqlite3.connect(join(appPath, 'todo.db'))
    ...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

找不到 Bottle 应用程序中的静态文件 (404) 的相关文章

随机推荐

  • 浏览器不会通过 onclick 事件设置 cookie

    尽管我确信这是显而易见的事情 但我还是对这个错误感到恼火 如果是的话 抱歉 以下 JavaScript 成功设置了我的 cookie 但是一旦我将相同的代码绑定到onclick事件 就像这样
  • 这个递归同步调用如何不死锁?

    我有一组方法 它们全部同步到类对象 不能使用 self 因为可以在多个线程中使用该对象的多个实例 其中一些方法调用类中也在类对象上同步的其他方法 不知怎的 这有效并且不会导致我期望的僵局 我假设 testA 将被阻止运行 因为 testB
  • if (设备 == iPad), if (设备 == iPhone)

    所以我有一个通用应用程序 我正在设置一个内容的大小UIScrollView 显然 iPhone 和 iPad 上的内容大小会有所不同 如何为 iPad 设置特定尺寸 为 iPhone 和 iPod touch 设置另一个尺寸 if UI U
  • 解析 SQL 语句的库

    我希望能够解析任意 SQL SELECT 语句并检索各个组成部分 列 关系 JOIN 条件 WHERE 条件 ORDER BY 列 最好使用 Delphi 快速谷歌搜索显示了几种不同的免费软件产品 但尚不清楚它们是否完整和 或正在积极开发中
  • 纬度值无效:必须介于 -90 到 90 之间

    我尝试在我的phonegap应用程序中通过javascript Azure Map创建地图 但出现以下错误 atlas min js api version 1 0 362 未捕获 承诺 错误 无效的 LngLat 纬度值 必须介于 90
  • 如何在 css 动画末尾使用 display:none

    我想在关键帧动画的末尾添加一个 display none 属性 就像这样 sw intro animation introtop animation duration 0 8s animation delay 2s animation fi
  • Python 中的日期差异(以分钟为单位)

    如何计算Python中以下时间戳的时间差 以分钟为单位 2010 01 01 17 31 22 2010 01 03 17 31 22 minutes diff datetime end datetime start total secon
  • SwiftUI Plain List 如何删除 iOS16 中的顶部标题填充

    我正在寻找一种方法来删除 SwiftUI 列表中的顶部填充 借助 iOS 15 我们可以做到UITableView appearance sectionHeaderTopPadding 0 然而 在 iOS 16 中 List 已通过 UI
  • 具有代理 Lambda 的 AWS API Gateway:Lambda 函数的权限无效

    I am using AWS API Gateway with a proxy Lambda when the name of the lambda function is coming as a stage variable Meanin
  • PHP、HTML、Javascript 执行顺序

    我有一个 test php 文件 该文件包含一些 PHP 代码 HTML 元素以及一些内部 JavaScript 和一些外部 JavaScript 我想知道哪个首先加载或执行 PHP HTML 还是 JavaScript 我想知道执行顺序
  • 单元格的内容应占据所有行而不改变列宽

    我想要一张不标准的桌子 它应该是这样的 这是我的demo http jsbin com kegogabine edit html output 正如您所看到的 第一列的宽度因文本而增加 但我不希望出现这种行为 我希望文本从左到右整行 更新
  • 将两个 UIImage 合并为 1 个以保存到库

    我想知道如何将 2 个 uiimage 合并为 1 个 我想将最终产品保存到图书馆 为了保存图像 我使用了 UI 按钮 这是我如何保存 UIImageview image 的片段 IBAction getPhoto id sender UI
  • vert.x 有集中过滤吗?

    我是 Vert X 的新手 Vert x 是否有内置的集中式过滤器 我的意思是您将在 J2EE 应用程序上使用的过滤器类型 例如 所有页面都必须经过身份验证过滤器或类似的操作 在 Vert x 中是否有标准化的方法来实现这一目标 我知道这个
  • 有索引的搜索时间 > 无索引的搜索时间

    我有一个集合 numbers 其中包含 200000 个文档对象 其中 number i i 1 到 200000 没有任何索引 gt 10000 给出 nscanned 200000 和 115 ms 对于数字 gt 10000 的索引给
  • 在 PHP 中将时区偏移量转换为友好名称

    我正在尝试使用 PHP 将 RFC 时间戳转换为友好的日期 这是例子 Wed 17 Feb 2010 19 44 01 0500 我希望将其打印为 Wed 17 Feb 2010 19 44 01 EST 使用 date strtotime
  • 为什么 :before 和 :after 伪元素需要 'content' 属性?

    鉴于以下情况 为什么 after选择器需要内容属性才能运行吗 test width 20px height 20px background blue position relative test after width 20px heigh
  • 利用 JQuery find 或 inArray 方法查找数组中的项目

    我想知道是否有人知道使用 JQuery find 方法或 inArray 方法来查找数组中的项目的方法 我似乎在文档中找不到任何内容 例如 var items id 1 name bob id 2 name joe id 3 name be
  • 如何获取CPU一级缓存(主缓存)信息?

    我尝试使用 WMI 获取 CPU 缓存信息 效果很好 但仅适用于 2 级和 3 级缓存 所以我的问题是 如何获取 CPU 1 级缓存信息 这是WinAPI方式 它使用GetLogicalProcessorInformation http m
  • Visual Studio 2010 Beta 2 + ClearType

    我想知道 您对 Visual Studio 2010 编辑器 Beta 2 中的文本渲染满意吗 在我的主显示器上 即使使用 12 号字体 它看起来也非常模糊 当使用字体大小 10 或 11 时 效果很糟糕 可以为 VS code 窗口显式设
  • 找不到 Bottle 应用程序中的静态文件 (404)

    我已经回顾了这里有关此问题的所有问题 回顾了瓶子教程 回顾了瓶子谷歌小组讨论 据我所知 我做的一切都是正确的 但不知何故 我无法正确加载 CSS 文件 我在静态文件上收到 404 错误 http localhost 8888 todo st