2016-05-22 3 views
0

一つはGalleryと呼ばれ、私は以下のクラスは、そのテーブル上のすべてのオブジェクトを一覧表示する必要があります。Django:ListView。テンプレートに含める変数はどこで宣言できますか?私のアプリの私のテーブルの

from django.views.generic import ListView 
from galleries.models import Gallery 

class GalleryList(ListView): 
template_name = "path/to/template" 
context_object_name = "object_list" 

def queryset(self): 
    return Gallery.objects.order_by('-title')[:20] 

をそして、それは仕事をしていません。私のテンプレートでは次のようにします:

{% block gallery_list %} 
    <h1>Gallery List</h1> 
    <ul> 
     {% for gallery in object_list %} 
      <li><img src="{{ gallery.thumbnail.url }}" />{{ gallery.title }}</li> 
     {% endfor %} 
    </ul> 
{% endblock %} 

すべてが期待通りに動作します。ここにあるのは、base.htmlテンプレートの場合、meta titleタグの場合は{% block title %}、ヘッダーの場合はmeta descriptionタグの場合は{% block description %}です。私はそれをどこかに宣言してそれをビューに渡すことができるようにしたい。明確にするために、変数titledescriptionは文字列です(例:title="List of all galleries on website")。私は、変数titledescriptionを宣言するためにどこかわからないクラスGalleryListに、

{% extends "base.html" %} 

{% block title %}{{ title }}{% endblock %} 
{% block description %}{{ description|default:title }}{% endblock %} 

しかし:私のような何かをしたいビューで

。私はそれがDjangoにとって可能であるか適切であるかどうかはわかりません。私は正しいことをしたい。私は私ができるすべてのギャラリーを一覧表示のための衣装テンプレートを持っているとしても

、ちょうど行います

{% extends "base.html" %} 

{% block title %}List of all galleries on website{% endblock %} 
{% block description %}List of all galleries on website...{% endblock %} 

しかし、それは十分にコード化されたDjangoアプリケーションのための適切だ場合、もう一度、私は知りません。私はDjangoの初心者です。私はこれについてどうなるのか知りたいと思います。私の質問が十分に明確であることを願っています。

+1

この質問は広すぎますが、http://docs.djangoproject.com/en/1.9/ref/class-based-views/mixins-single-object/#django.views.generic.detail.SingleObjectMixinを読むことができます。最初に.get_context_data – Selcuk

答えて

1

あなたはコンテキストにしたいあなたにどのような追加のコンテキスト変数を追加するListViewget_context_data methodを上書きすることができます。

class GalleryList(ListView): 

    def get_context_data(self, **kwargs): 
     ctx = super(GalleryList, self).get_context_data(**kwargs) 
     ctx['title'] = 'My Title' 
     ctx['description'] = 'My Description' 
     return ctx 

他のアプローチ - この情報を記入したテンプレートを持つのは - も健全です。どちらが良いかは、データの動的性によります。タイトル/説明がモデルデータやその他の要因に基づいている場合は、ビューに設定するのが理にかなっています。それが特定のテンプレートのために修正されているなら、それはおそらくbase.htmlを拡張するテンプレートに入れるほうがきれいでしょう。

+0

'title 'と' description'は実際には固定されているので、私はテンプレートオプションを使用します。迅速な答えをありがとう。 :-) – gglasses

関連する問題