如何使用 Web2py 数据库中的 img 文件更改背景图像

How to change the background image using img file from database in Web2py

我想做的是使用上传到数据库而不是 'static', 'images' 文件夹中的图像文件不断更改背景图像。

我显然不能在 css 中做到这一点,实际上,我什至不确定这是否可能。我能否以某种方式在 layout.htmlView 中完成这项工作?

这就是我在 View 中显示图像的方式,如果它不是背景图像的话:

<img src="{{=URL('download', args=pic_row.pics)}}"/>

当然,这种显示背景法师的方法是行不通的:

<section id="main" class="main row" style="background-image:{{=URL('download', args=pic_row.pics)}}">

..但是有什么方法可以实现吗?

为什么它在 CSS 中不起作用?

我不确定这是最好的方法,但您肯定可以构建一个控制器,returns 来自数据库的图像?

controllers/random.py:

def image():
    image = db(db.images ...).select().first() # get the image from db
    from io import StringIO
    stream = StringIO(image.bytes)
    response.headers['Content-Type'] = 'image/png'
    return response.stream(stream, 1024**2)

然后只需将您的样式表指向它即可。

some_view.html:

...
<style>
body { background: url("/random/image"); }
</style>
...

请阅读Anthony´s answer

有了这个,如果你包括

应该是可能的
<style>
    body {
        background: url('{{=URL('download',args=picture_name)}}')
    }
</style>

进入你的视野。

<section id="main" class="main row" style="background-image:{{=URL('download', args=pic_row.pics)}}">

问题中提出的上述方法很接近,但是CSS语法不正确。 style 属性应该是:

"background-image: url('{{=URL('download', args=pic_row.pics)}}')"