2010-08-31 21 views
7

django genel görünümlerini kullanıyorum, şablonuma talebinize nasıl erişebilirim?Django Genel Görünüm - Erişim talebi

URL'ler: Biraz daha arama yaptıktan sonra

file_objects = { 
    'queryset' : File.objects.filter(is_good=True), 
} 
urlpatterns = patterns('', 
    (r'^files/', 'django.views.generic.list_detail.object_list', dict(file_objects, template_name='files.html')), 
) 

cevap

9

, insanlar üzerinde bekleyen bu cevap vermek için süre. Buldum:

Bu varsayılan olarak istek tüm şablonları geçirilen olacağı anlamına gelir

TEMPLATE_CONTEXT_PROCESSORS = (
    'django.core.context_processors.request', 
) 

sizin settings.py için bu eklemeniz gerekir!

TEMPLATE_CONTEXT_PROCESSORS = ("django.contrib.auth.context_processors.auth", 
          "django.core.context_processors.request", 
          ) 

settings.py için değil verilen cevapların

+3

değil gerçek - hepsi jenerik görüntüleridir bir 'RequestContext' kullanılarak işlenen tüm şablonları geçilecek. –

+0

Bu benim için işe yaramadı, Django 1.7 dört buçuk yıl sonra. Aslında, 1,7 belgenin https://docs.djangoproject.com/en/1.7/ref/settings/ üstünde bir uyarısı vardır - "Özellikle varsayılan değer boş olmayan bir tuple olduğunda, ayarları geçersiz kıldığınızda dikkatli olun. veya MIDDLEWARE_CLASSES ve TEMPLATE_CONTEXT_PROCESSORS gibi sözlükler. Kullanmak istediğiniz Django özelliklerinin gerektirdiği bileşenleri sakladığınızdan emin olun. " Ancak bir çözüm için buraya bakın: http://stackoverflow.com/questions/9899113/get-request-session-from-a-class-based-generic-view – Chirael

1

eklemek oldu genel görünüm şablonu içinde istek nesnesine bu isteyen erişimi üzerine size urls.py böyle bir şey yapabilirsiniz:

from django.views.generic import ListView 

class ReqListView(ListView): 
    def get_context_data(self, **kwargs): 
     # Call the base implementation first to get a context 
     c = super(ReqListView, self).get_context_data(**kwargs) 
     # add the request to the context 
     c.update({ 'request': self.request }) 
     return c 

url(r'^yourpage/$', 
    ReqListView.as_view(
     # your options 
    ) 
) 

Şerefe!

3

hiçbiri sorunumu çözdü urls.py için, tökezledi bu diğerleri için böylece: benim için çalışıyor Ne

3

get_queryset yöntemini kullanmayı deneyin.

def get_queryset(self): 
    return Post.objects.filter(author=self.request.user) 

bkz bağlantısı (umut yardımcı olur): - kesinlikle See Greg Aker's page...

+0

harika! Bu Django'da çok kötü belgelendi. Tam olarak istek objesine ihtiyacım var. Listview alt sınıfında. – Timo

İlgili konular