【问题标题】:Running into confusion try to integrate Twitter Bootstrap into a Google App Engine-driven webapp遇到困惑尝试将 Twitter Bootstrap 集成到 Google App Engine 驱动的 web 应用程序中
【发布时间】:2013-06-11 16:23:27
【问题描述】:

我不确定如何让两者协同工作。我按照如何设置 Twitter Bootstrap 的说明进行操作,但由于某种原因,当我在本地运行服务器时,当我尝试引用 css/js 目录时出现 404。

我知道我可以去下载 Boilerplate,但是老板/导师给了我创建自己的 web 应用程序的任务,作为对 web 开发的一般介绍(我是菜鸟),我想构建尽可能多地从头开始。只是为了帮助巩固我对这一切的理解。

这就是我到目前为止所做的:

我获取了引导目录(css、js、img)并将它们放在我在我的应用程序目录中创建的名为“static”的文件夹中 - 我的 app.yaml 文件所在的目录。然后,在我的 app.yaml 文件中,我有:

handlers:
- url: /.*
  script: sorter.app

- url: /img/(.*\.(gif|png|jpg))
  static_files: static/img/\1
  upload: static/img/(.*\.(gif|png|jpg))

- url: /css
  static_dir: static/css

- url: /js
  mime_type: text/javascript
  static_dir: static/js

当我将 app 目录与 google 同步时,它告诉我复制了 8 个静态文件(有 8 个 twitter 引导文件)。然而,在我的 sorter.py 文件 (sorter.app) 中,我从这三个文件中得到了 404:

<link href="css/bootstrap.min.css" rel="stylesheet" media="screen" >
<link type="text/css" rel="stylesheet" href="css/bootstrap-responsive.min.css" >
<script src="js/bootstrap.min.js"></script>

【问题讨论】:

    标签: python css google-app-engine twitter-bootstrap


    【解决方案1】:

    您的 app.yaml 开头有一个包罗万象的网址,因此所有请求都将通过您的应用进行路由,而不是由 GAE 直接提供服务。将处理程序移动到处理程序列表的末尾:

    handlers:
    - url: /css
      static_dir: static/css
    ...
    - url: /.*
      script: sorter.app
    

    此外,您可能希望在 html 中使用绝对 URL 而不是相对 URL。例如/css/bootstrap.min.css 可能会比css/bootstrap.min.css 工作得更好。

    【讨论】:

    • 谢谢!不敢相信我没有注意到这一点。
    【解决方案2】:

    我将引导程序与应用引擎一起使用。我的 app.yaml 文件有一个静态处理程序。当我发现更多差异时,我会更新这个答案。

    handlers:
    - url: /static
      static_dir: static
    

    我的 app.yaml 文件和静态文件夹位于根应用程序目录中。我的目录结构有 css 文件夹的 static/css。

    我的路也和你的略有不同:

    <link href="../static/css/bootstrap.css" rel="stylesheet">
    

    【讨论】:

    • 感谢您的回复!所以你是说你有静态处理程序,在你的静态目录内有 css/js/img 目录(这与你的 app.yaml 文件相关吗?),但没有特定 css/js/img 的处理程序目录?我仍然无法让它工作。我改变了我的处理程序,所以我只有静态的。然后在我的应用程序文件中的 html 位中,我将您的代码用于资源链接,但我的本地服务器告诉我它为每个 GET 调用获取 404 154
    • 是的,我没有特定的处理程序。我的 app.yaml 文件和静态文件夹位于应用程序根目录中。
    • 我的也是。为什么这不起作用............?这可能与我的根应用程序目录是由 virtualenv 创建的并且我在本地作为虚拟环境运行它,但是将它作为我的正常 ubuntu 登录名同步到谷歌这一事实有什么关系(尽管引导程序不会在本地或在 apppot 上工作)
    • 我没有使用GAE的虚拟环境。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多