对于模板中对象的每个实例化,我想提取它与ImageField的相关网址以显示照片。但是,如果没有内联样式,我很难找到一种方法:
{% for entry in entries %}
<div class="row">
<div class="col s4">
<div class="card-panel" style="background-image: url('{{entry.image.url}}');">
<h1>{{entry.title}}</h1>
</div></div></div>
{% endfor %}
这可以将每个单独的图像带到模板中,但我想知道我是否可以抽象出css只是为了将我的css保存在一个单独的文件中。
编辑:同样适用于<img>
标记:
<img src="{{ entry.image.url }}">
这个,在模板中,将是动态的。但我无法将其设置为background-image
答案 0 :(得分:1)
可以使用Django模板系统来渲染CSS并创建动态css文件。我不建议这样做,但如果你真的想要,你可以像普通网址/视图一样进行设置。
例如,您的urls.py会有类似这样的内容
url(r'^dynamic_style/(?P<pk>\w+)$', dynamic_style, name='dynamic')
然后你的观点看起来像
def dynamic_style(request, pk):
entry = get_object_or_404(Entry, pk)
return render_to_response('dynamic_style.css', {
'image_url': entry.image.url
}, content_type='text/css')
然后在你的模板中你可以
<link href="{% url 'dynamic_style' pk=entry.id %}" rel="stylesheet">
这是一种生成css的笨重方式。如果您可以按照上面的建议使用内联,那就更好了。