Css django中的可变英雄形象
在django网络应用程序中,我有一个带有英雄图像的页面。这主要是因为有一些CSS(在一个.CSS文件中)包含一个名为Css django中的可变英雄形象,css,django,Css,Django,在django网络应用程序中,我有一个带有英雄图像的页面。这主要是因为有一些CSS(在一个.CSS文件中)包含一个名为.hero image的类,该类具有背景图像:标记和url(“…”)值 现在我想让图像由一些逻辑控制:世界上的某种东西导致数据库查找,决定是否使用imageone.png,two.png,等等 我认为这样做的唯一合理方法是在每次提供页面时,将CSS文件中的.hero imageCSS块移动到内联CSS中。(这至少比动态提供.css文件要有效,而不是从静态文件一直更改。) 这似乎是
.hero image
的类,该类具有背景图像:
标记和url(“…”)
值
现在我想让图像由一些逻辑控制:世界上的某种东西导致数据库查找,决定是否使用imageone.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
- 配置文件图像:每个用户不同,也上载,但绑定到一个用户。可以集成在许多不同的页面上,例如博客或图书目录的作者图像
- 文件上载和相应的文件字段
- 视图和URL一起工作,可以获取正确的模型实例
- 不关心是否呈现文本、html、css或js的模板
是的,您可以在html页面中使用
标记来呈现背景url。url的来源完全取决于该决定因素。您的问题尚未解决,请使用更好的插图进行解释。例如:要显示页面上的特定图像,如果不是,则应显示另一图像