jinja2 设置背景图片

jinja2 set background image

我正在尝试使用 jinja2 设置背景图片。我已经设法从我的开发服务器提供我的文件,并且可以 post 文档中的图像,但我希望它形成一个漂亮的背景,其他所有内容都在上面。

举个例子,我试过这个:

{% extends "layout.html" %}

{% block body %}
  {% if current_user.is_authenticated %}
    {% if commPageData.background_image %}    
        <body background="{{'/images/'+commPageData.background_image}}">
    {% else %}
        <body>
    {% endif %}
            A thing
         </body>

我有一个 css 文件和一个提供模板默认行为的布局文件。我怎样才能拥有我所服务的漂亮背景图片?

您似乎试图告诉前端使用应用程序路由,但没有向其传递正确的命令。我假设您正在使用 Flask。真的,有两种方法(我能想到)来切这个面包,这取决于你。第一个是仅使用标准 html 而不是嵌入 python 来路由应用程序以查找文件,看起来像:

<body background="/path/to/image.jpg">

但是,如果您想利用框架和模板,那么您应该使用内置方法 url_for

看起来像这样:

<body background="{{ url_for('static', filename=commPageData.background_image) }}">

'static' 是此图像所在的应用程序中的目录。

现在,我不确定 commPageData.background_image 在您的应用程序中来自何处。我的代码片段假设它被用作一个值,它会识别它是否传递回逻辑,如果这有意义,并且它需要在你告诉 url_for 方法查找它的地方,即使是动态生成的。如果您确实有特定的图像要渲染为背景,则需要适当指定:

<body background="{{ url_for('static', filename='image.jpg') }}">

当然,已在 HTML5 中弃用,并且可能无法在许多浏览器中正确呈现。更喜欢使用 CSS 而不是

<body style="background:url({{'images/'+commPageData.background_image}});"> 

或直接将其放入您的 CSS 文件