【问题标题】:jinja2 set background imagejinja2 设置背景图片
【发布时间】:2016-01-26 20:17:15
【问题描述】:

我正在尝试使用 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>

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

【问题讨论】:

    标签: python flask jinja2


    【解决方案1】:

    您似乎试图告诉前端使用应用程序路由而不向其传递正确的命令。我假设你正在使用 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 文件中

    【讨论】:

    • 您好,我提供图片没有问题,您似乎正在提供如何做到这一点的提示。相反,我刚刚发现设置 不会添加背景。我可以像这样插入图像:。我就是不能做背景。这可能与 css 和 layout.html 有更多关系,我不确定。
    • 正文背景已弃用,因此可能取决于您的浏览器。最好将 CSS 与 一起使用,或者将其直接放在 CSS 文件中
    • 嘿,这就是问题所在。谢谢。我将您的原始帖子标记为答案,您可能需要对其进行编辑以添加您的评论...不知道是否有意义。
    猜你喜欢
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 2020-11-21
    • 2015-05-09
    • 2012-03-07
    • 2020-07-03
    • 2011-09-01
    • 1970-01-01
    相关资源
    最近更新 更多