2011-03-04 6 views
5

, RequestContext değişkenler sadece request.VARNAME gibi erişilebilir:Sınıf tabanlı genel görünümler içinde RequestContext'e eklenen değişkenler nasıl okunur? Düzenli manzaralı

def example(request, template_name='stuff_list'): 
    return render_to_response(template_name, 
     {'stuff_list': get_list_or_404(Stuff, foo=request.DEBUG)}, 
     context_instance=RequestContext(request)) 

... yerine context_instance ayar ben fonksiyonu temelli jenerik görünümdirect_to_template

diyebiliriz Nasıl Yaparım RequestContext'e class-based generic views içinde eklenen değişkenleri okuyabilirsiniz? Örneğin

:

class ArticleListView(ListView): 
    template_name = 'stuff_list' 
    bar = request.DEBUG # This won't work. What should I use instead? 
    queryset = get_list_or_404(Stuff, foo=bar) 


zaten class-based TemplateView ile değiştirilir olacaktır.
Onlar Django 1.3'te yeni ve sadece kullanmak istiyorum.

cevap

7

yapabilmeniz gerekir. Bu durumda - get_queryset() - sınıf öznitelikleri yerine kullanmanız gerekir. Seçeneklerin statik olarak kontrol edildiğinde sınıf özellikleri gerçekten sadece kısayollar ve bazı basit şeylerle sınırlı. Daha karmaşık bir şey yapmanız gerektiğinde, bunun yerine bir geri aramaya geçmek istersiniz. Senin durumunda

, aşağıdaki gibi kod çalışması gerekir: Daha fazla ayrıntı için

class ArticleListView(ListView): 
    template_name = 'stuff_list' 

    def get_queryset(self): 
     return get_list_or_404(Stuff, foo=self.request.DEBUG) 

, see the documentation.

+0

Çok teşekkürler, yeni sınıf tabanlı genel görünümler, uygulamamı daha da temiz ve daha küçük hale getirdi. Django ekibi harika bir iş çıkardı! –

6

RequestContext parametreleri de düzenli içerik değişkenleri vardır. Sadece {{VARNAME}}

+2

+1 Birisi bundan haberi olmayabilir, teşekkürler! –