2017-12-04 9 views
0

テンプレート内のオブジェクトのインスタンス化ごとに、写真を表示するために関連するImageFieldのURLを抽出したいと思います。しかし、私は、インラインスタイリングなしでこれを行う方法見つけるのトラブルを抱えている:これは、テンプレートに個々の画像をもたらすことで機能しインラインスタイリングを避け、テンプレート言語を活用するにはどうすればよいですか?

{% 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

タグ「

+0

@RajaSimon same situation for the 」を使用してください。私はポストに例を編集します – Homer

+2

静的なCSSを使って動的なスタイルを作る方法はありません。 –

答えて

1

CSSをレンダリングしてダイナミックCSSファイルを作成するには、Djangoテンプレートシステムを使用することができます。私はこれを行うことをお勧めしませんが、あなたが本当にしたい場合は、通常のURL /ビューのように設定することができます。

たとえば、あなたの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を生成するためのぎこちない方法です。上記のようにインラインで使用できる場合は、はるかに優れています。

関連する問題