Css django中的可变英雄形象

Css django中的可变英雄形象,css,django,Css,Django,在django网络应用程序中,我有一个带有英雄图像的页面。这主要是因为有一些CSS(在一个.CSS文件中)包含一个名为.hero image的类,该类具有背景图像:标记和url(“…”)值 现在我想让图像由一些逻辑控制:世界上的某种东西导致数据库查找,决定是否使用imageone.png,two.png,等等 我认为这样做的唯一合理方法是在每次提供页面时,将CSS文件中的.hero imageCSS块移动到内联CSS中。(这至少比动态提供.css文件要有效,而不是从静态文件一直更改。) 这似乎是

在django网络应用程序中,我有一个带有英雄图像的页面。这主要是因为有一些CSS(在一个.CSS文件中)包含一个名为
.hero image
的类,该类具有
背景图像:
标记和
url(“…”)

现在我想让图像由一些逻辑控制:世界上的某种东西导致数据库查找,决定是否使用image
one.png
two.png
,等等

我认为这样做的唯一合理方法是在每次提供页面时,将CSS文件中的
.hero image
CSS块移动到内联CSS中。(这至少比动态提供.css文件要有效,而不是从静态文件一直更改。)

这似乎是一种比较常见的需求,所以我还没有找到关于它的文档,这让我很困扰

我是否达到了目标,或者是否有更好的方法来实现这一目标

更新 我在这里展示了我最终为解决这个问题而编写的代码。我也接受了@melvyn的回复,这并不是我所问的,而是包括了我应该问的很多问题的答案)

在我的
url.py
中,我开始这样做:

path('nous', views.AssoView.as_view(template_name='asso/qui-sommes-nous.html',
                                    hero_image="asso_tn/happy-folks-1000.jpg",
                                    hero_title="Qui sommes-nous ?"),
     name='qui-sommes-nous'),
然后视图执行以下操作:

类关联视图(TemplateView): 英雄形象=无 英雄头衔=无 英雄描述=无

def get_context_data(self, **kwargs):
    context = super().get_context_data(**kwargs)
    if self.hero_image is not None:
        context['hero'] = True
        context['hero_image'] = self.hero_image
        context['hero_title'] = self.hero_title or ""
        context['hero_description'] = self.hero_description or ""
    return context
现在,具有英雄图像的页面的模板库在
块中只有这一行:

background-image: linear-gradient(rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.5)),
    url("{% static hero_image %}");
和一些html来定位图像和文本:

<div class="hero-image">
  <div class="hero-text">
    <h1>{{ hero_title }}</h1>
    <p class="hero-description">{{ hero_description }}</p>
  </div>
</div>

{{英雄头衔}

{{hero\u description}


这是一种非常常见的模式,上面没有文档,因为它取决于图像选择的决定因素:

  • 文章英雄形象:每篇文章都会有所不同,形象由作者上传并存储在“文章”模型实例中
  • 类别英雄图像:不同的类别,不同的图像,但该类别中的项目将共享英雄图像-相同的事情:图像存储在类别模型上,但有时命名约定用于静态图像(
    /static/Category/.png
  • 配置文件图像:每个用户不同,也上载,但绑定到一个用户。可以集成在许多不同的页面上,例如博客或图书目录的作者图像
等等等等

Django拥有实现这一目标的所有设施:

  • 文件上载和相应的文件字段
  • 视图和URL一起工作,可以获取正确的模型实例
  • 不关心是否呈现文本、html、css或js的模板

是的,您可以在html页面中使用
标记来呈现背景url。url的来源完全取决于该决定因素。

您的问题尚未解决,请使用更好的插图进行解释。例如:要显示页面上的特定图像,如果不是,则应显示另一图像