Джанго Дженерик Вью - Доступ к запросу - PullRequest
7 голосов
/ 31 августа 2010

Я использую общие представления django, как мне получить доступ к запросу в моем шаблоне.

URL-адреса:

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')),
)

Ответы [ 4 ]

9 голосов
/ 31 августа 2010

После еще нескольких поисков, ожидая ответа от людей. Я нашел:

Вам нужно добавить это в settings.py

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

Это означает, что по умолчанию запрос будет передан всем шаблонам!

3 голосов
/ 02 июля 2014

Попробуйте использовать метод get_queryset.

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

см. Ссылку (надеюсь, это поможет): - См. Страницу Грега Акера ...

3 голосов
/ 02 февраля 2012

Ни один из приведенных ответов не решил мою проблему, поэтому для тех, кто наткнулся на этот желающий доступ к объекту запроса в шаблоне общего вида, вы можете сделать что-то подобное в своем urls.py:

.
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
    )
)

Ура! * * 1004

1 голос
/ 24 января 2012

Что у меня работает, так это добавить:

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

Для настройки.py, а не для urls.py

...