jinja2 设置背景图像

use*_*920 5 python jinja2 flask

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

作为一个例子,我尝试了这个:

{% 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>
Run Code Online (Sandbox Code Playgroud)

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

tad*_*cks 5

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

<body background="/path/to/image.jpg">
Run Code Online (Sandbox Code Playgroud)

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

它看起来像这样:

<body background="{{ url_for('static', filename=commPageData.background_image) }}">
Run Code Online (Sandbox Code Playgroud)

“static”是应用程序中该图像所在的目录。

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

<body background="{{ url_for('static', filename='image.jpg') }}">
Run Code Online (Sandbox Code Playgroud)

当然,它在 HTML5 中已被弃用,并且可能无法在许多浏览器中正确呈现。最好使用 CSS 来代替

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

或者直接将其放入 CSS 文件中