使用 Google App Engine 在 HTML 和 CSS 上呈现模板

Posted

技术标签:

【中文标题】使用 Google App Engine 在 HTML 和 CSS 上呈现模板【英文标题】:Template render on HTML AND CSS using Google App Engine 【发布时间】:2012-06-09 09:09:12 【问题描述】:

我目前正在开发我在 GAE 上托管的网站。 好久没有更新了,所以现在我正在尝试刷新它:D

为了做到这一点,我尝试使用 MVC 模型,使用 Python 和 WSGI、WebAPP2 和 Render.Template。

一切正常,除了 CSS 部分。

确实,我无法使用 GAE (django) 方法渲染我的 CSS 的某些部分。 我的 Python 控制器正在调用 html 文件并正确地用 dict() 值替换变量。

但现在,为了只能拥有有限数量的 CSS 文件,我正在尝试做同样的事情。

不幸的是,我不知道我应该如何调用 CSS 文件。

我现在像往常一样在我的 HTML 上调用我的 CSS:

<link rel="stylesheet" media="screen" type="text/css" href="/assets/css/struct/index.css">

并尝试动态渲染这部分文件:

header#navigation
height:auto;
min-height:480px;
width:100%;
min-width:100%;
background-image:url('/assets/img/content/content_cat_name/cat_img.jpg');
background-repeat:no-repeat;
background-position: left top;
background-size:contain;
background-color:#efefef;

然后一切都由我的 python 代码调用,如下所示:

class URIHandler(webapp2.RequestHandler):
def get(self, subdomain, page):
    name = subdomain
    pattern = os.path.join(os.path.dirname(__file__), '../views' ,'index.html')        
    template_values = 
            'content_cat_name':name,
            'cat_menu_title':name,
            'cat_menu_text':name,
    

    self.response.out.write(template.render(pattern, template_values))

所以,如果有人可以帮助我正确调用我的 CSS 并使用我的 python 脚本替换变量,我会非常高兴:D 提前致谢。

【问题讨论】:

您到底为什么要尝试动态生成 CSS? 【参考方案1】:

template.render 只能替换您在path 参数(第一个参数)中指定的文件中的标记。您从静态目录中提供 .css 文件,因此不会发生令牌替换,因为该文件没有通过该代码。

您可以在 index.html 文件中内联包含标记的 CSS 部分。

【讨论】:

哎呀 -_-' 我必须为每个类别创建 css 文件... CSS 属性的内联替换有点难看,我更喜欢为每个类别生成一个 css。但是非常感谢您的帮助:D 进一步如果你导入一个文件 template.render 把它当作静态的并且不会在其中渲染任何标记。 为什么不只有一个 CSS 文件,每个变体都有基于类的规则? @MarkFinch :我不明白你的假设,你试图指出什么? NickJohnson:您的意思是在 HTML 页面中基于规则生成?如果是,是的,这就是我最终选择做的事情 ;-) @DrI 如果您使用% include 'myfile.html' % 指令导入文件。 myfile.html 不能包含任何指令,它只能包含静态内容。这又回到了您想要渲染部分 css 的问题。很容易认为您可以创建一个带有指令的 master.css 文件来导入包含更多指令的其他补充 css 文件,但它不起作用。【参考方案2】:

我遇到了同样的问题。我发现这个GAE documentation 很有帮助。总之你需要进入你的 app.yaml 文件创建一个新的处理程序:

url: /foldername
  static_dir: foldername

然后在你的链接标签中:

href="foldername/index.css"

【讨论】:

好吧,理论上,如果您生成整个 css 文件,这将是一个解决方案,处理程序将能够根据您的处理程序完全生成特定的 css 文件,但在我的情况下,我尝试动态生成只有少数指令参数,如背景参数。我终于使用了一个 css 预处理系统(sass)来解决这个问题。无论如何,感谢您对这个话题的兴趣。我现在开始另一个项目(java 一个)。

以上是关于使用 Google App Engine 在 HTML 和 CSS 上呈现模板的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Google Cloud App Engine 上使用 PubSub 创建订阅者,该订阅者通过 Publisher 从 Google Cloud App Engine Flex 收听消息?

在 Google App Engine 中使用 Cron 作业

使用 Google App Engine 发布订阅

是否可以将 Google App Engine 与 Google Cloud *** 一起使用?

Google App Engine 通过内部网络与 Compute Engine 通信

使用 rtmplite 在 Google App Engine 中录制音频?