Передайте захваченное именованное регулярное выражение в словарь URL в общем представлении - PullRequest
3 голосов
/ 22 апреля 2010

Я работаю с общим представлением в Django.Я хочу записать именованный параметр группы в URL и передать значение в словарь шаблонов URL.Например, в приведенном ниже URLConf я хочу захватить значение parent_slug в URL и передать его в значение словаря queryset следующим образом:

urlpatterns = patterns('django.views.generic.list_detail',
    (r'^(?P<parent_slug>[-\w]+)$',
     'object_list',
     {'queryset':Promotion.objects.filter(category=parent_slug)},
     'promo_promotion_list',
    ),
                      )

Возможно ли это сделать в одной записи URLConf,или было бы разумнее, если бы я создал собственное представление для захвата значения и передачи набора запросов непосредственно в общее представление из моего переопределенного представления?

1 Ответ

2 голосов
/ 27 июня 2012

Я делаю некоторые перенаправления в urls.py следующим образом, может быть, это работает и для вас?

from django.views.generic.base import RedirectView
urlpatterns = patterns('',
    (r'^manual/glossary/(?P<slug>[^/]+)/$',
        RedirectView.as_view(url='/glossary/%(slug)s/')),
)

Однако, это, кажется, не поддерживается всеми общими представлениями на основе классов:

from django.views.generic.list import ListView
urlpatterns = patterns('',
    (r'^tag/(?P<tag>\d+)/$',
        ListView.as_view(
            queryset=Blog.Post.objects.filter(tags='%(tag)d'),
            paginate_by=5)),
)

Этот второй фрагмент кода не работает, поэтому вам придется пропатчить универсальный ListView или передать через пользовательское представление, как вы предложили.

...