ruchej
@ruchej
Конструктор мебели. Пишу макросы для К3-Мебель

Как получить дополнительные аргументы в представлении?

В документации говорится о передачи дополнительных аргументов из url в представлении.
Пример:
urlpatterns = [
    url(r'^blog/(?P<year>[0-9]{4})/$', views.year_archive, {'foo': 'bar'}),]

Но как в классе представления получить этот аргумент foo?
Например тут:
class BasicCaseView(generic.ListView):

    queryset = models.StandardCases.objects.all().filter(type_case='case')
    template_name = 'core/basic_modules.html'
    context_object_name = 'bases'

В моём примере я передаю доп аргумент filtr и хочу его получить в своём классе BasicCaseView
path('basic/case/', views.BasicCaseView.as_view(), {'filtr':'case'}, name='basiccase'),
  • Вопрос задан
  • 61 просмотр
Пригласить эксперта
Ответы на вопрос 2
sergey-gornostaev
@sergey-gornostaev Куратор тега Django
Седой и строгий
В любом из методов класса представления можно обратиться к именованному аргументу с помощью self.kwargs Например так:
class BasicCaseView(generic.ListView):
    template_name = 'core/basic_modules.html'
    context_object_name = 'bases'

    def get_queryset(self):
        return models.StandardCases.objects.filter(type_case=self.kwargs['filtr'])

Соответствующий раздел документации.
Ответ написан
@MAGistr_MTM
Учусь программировать
class BasicCaseView(generic.ListView):

    def __init__(self):
        super(BasicCaseView).__init__()
        self.filtr1 = self.kwargs['filtr']

    
    def foo(self):
        self.filtr1 # он здесь будет доступен

П.С. надо сначала выучить(хоть немного) язык програмирования, а уж потом лезть в его фреймворки
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы