2017-11-01 13 views
0

images_peopleリストの各画像にキャプションを追加する方法は?画像を表示するDjangoコンテキストプロセッサ

このcontext_processorは、レベルのプラクティスで改善することができますか?

(以前...私のcontext_processors設定で追加)::私は私のWebページにランダムに画像を表示したい

は、その後、私は、コンテキストプロセッサ

コンテキスト製で

# -*- coding: utf-8 -*- 

from random import choice 

images_people = ['https://s3-sa-east-1.amazonaws.com/ihost-project/assets/img/bolivia2.jpg','2', 
      'https://s3-sa-east-1.amazonaws.com/ihost-project/assets/img/bolivia3.jpg', 
      'https://s3-sa-east-1.amazonaws.com/ihost-project/assets/img/bolivia4.jpg', 
      'https://s3-sa-east-1.amazonaws.com/ihost-project/assets/img/bolivia-children.jpg', 
      'https://s3-sa-east-1.amazonaws.com/ihost-project/assets/img/ElZocalo.jpg', 
      'https://s3-sa-east-1.amazonaws.com/ihost-project/assets/img/israel.jpg', 
      ] 

def images(request): 
    return {'images': choice(images_people)} 

を私テンプレート私はこのコンテキストプロセッサを呼び出しています:

<div class="portrait"> 
    <div class="img-cont" style="background: url('{{ images }}') no-repeat center; background-size:cover;"> 
    </div> 
     # Add caption to image 
     <!-- <span></span> --> 
</div> 

答えて

2

あなたはuldコンテキストプロセッサのリストを(url、caption)の2タプルのリストに変更します。

images_people = [ 
    ('https://s3-sa-east-1.amazonaws.com/ihost-project/assets/img/bolivia2.jpg', 'Caption 1'), 
    ('https://s3-sa-east-1.amazonaws.com/ihost-project/assets/img/bolivia3.jpg', 'Caption 2), 
    ... 
] 

def images(request): 
    # n.b changed from `images` to `image` since it's a single image 
    return {'image': choice(images_people)} 

は、その後、あなたのテンプレートで、{{ images.0 }}はURLになり、{{ images.1 }}はキャプションになります。

タプルをインデックスでアクセスしたくない場合は、NamedTupleを参照するか、クラスを作成します。

関連する問題