代码之家  ›  专栏  ›  技术社区  ›  Bob Aman

获取关于Python应用程序引擎中静态文件的信息;解决方法

  •  1
  • Bob Aman  · 技术社区  · 15 年前

    我正在开发一个应用引擎项目,该项目将具有可定制的主题。我希望能够使用jquery ui主题。问题是要弄清楚这个CSS文件将被命名为什么。(通常为“jquery-ui-1.7.2.custom.css”。版本号会改变,人们倾向于重命名东西,但是应该只有一个CSS文件,如果出于某种原因有两个或多个CSS文件,我认为这是一个错误条件。)因为它是一个静态文件(静态文件与应用程序的其他资源分开上载到应用程序引擎),我不能 glob CSS文件的目录。我不能仅仅假设它是硬编码的,我真的不想把它设置为配置设置,因为这是一种糟糕的用户体验。

    guido告诉我要使用symlink,这样应用程序引擎就可以看到两个副本,一个是静态的,另一个是应用程序资源,但是symlinks在Windows上不起作用,因为这最终将是开源的,所以我无法控制用户使用的SDK。另一个建议是使用部署时脚本,但是Mac用户在他们的SDK版本中有一个很好的“部署”按钮,我不想告诉他们,“哦,嘿,抱歉给您带来不便,但是您不能在这个项目中使用它。”

    我显然需要一个开箱即用的解决方案来解决这个问题,但我有点茫然。对于如何从 ThemeRoller 进入应用引擎应用程序?已经需要一些后期处理,因为ThemeRoller提供的zip文件中只有“css”目录中的文件。也许我可以写一些以原始主题为输入的东西,并在另一方面吐露一些有用的东西(部署时脚本技巧,但不知何故用户不友好)。这里的诀窍是演示我希望用户在命令行上花费尽可能少的时间。理想的解决方案假设执行此任务的人大部分是非技术人员。解决方案的任何一部分都不会比安装Wordpress或Drupal困难得多,在一个完美的世界里,它应该是一种更简单的方式。

    1 回复  |  直到 15 年前
        1
  •  1
  •   Noah McIlraith    15 年前

    为了完成您的要求,我将使用数据存储来服务CSS文件。因为这将允许简单的列表、排序,甚至修改和上传。

    除此之外,您的下一个最佳选择是将CSS数据存储在脚本中(一个字典,其中文件名是键名,CSS代码是值)。或者,正如您建议的,在部署到appengine之前运行一个脚本。

    就我个人而言,我会选择在数据存储中存储选项,因为它将允许更多的用户自定义(例如每个用户都能够提供自己的CSS文件),只要确保使用memcache,以避免在可能的时候访问数据存储(这应该是非常常见的情况),以及使用HTTP头来访问让浏览器在本地缓存CSS文件。