Я только начал возиться с представлениями на основе классов, и я хотел бы иметь доступ к переменным из URL-адреса внутри моего класса. Но у меня возникают трудности с тем, чтобы заставить это работать. Я видел несколько ответов, но все они были такими короткими, что я обнаружил, что они бесполезны.
В основном у меня есть URL
url(r'^(?P<journal_id>[0-9]+)/$',
views.Journal_Article_List.as_view(),
name='Journal_Page'),
Затем я хотел бы использовать ListView
для отображения всех статей в конкретном журнале. Моя таблица статей, однако, связана с таблицей журнала через файл journal_id
. Итак, я делаю следующее
class Journal_Article_List(ListView):
template_name = "journal_article_list.html"
model = Articles
queryset = Articles.objects.filter(JOURNAL_ID = journal_id)
paginate_by = 12
def get_context_data(self, **kwargs):
context = super(Journal_Article_List, self).get_context_data(**kwargs)
context['range'] = range(context["paginator"].num_pages)
return context
Однако journal_id не передается, как в функциональных представлениях. Из того, что я смог найти в теме, которую я прочитал, я могу получить доступ к переменной, используя
self.kwargs['journal_id']
Но я немного потерялся в том, как я должен это делать. Я попробовал это непосредственно в классе, который позволяет мне узнать, что self не существует, или перезаписав get_queryset, и в этом случае он говорит мне, что as_view()
принимает только аргументы, которые уже являются атрибутами класса.