Как передать параметр в представления на основе классов в Django?
как передать этот параметр в вызываемом классе?
Это url
#url
path('all-agency/<int:id>', AllAgenciesView.as_view(), name='all-agency'),
cbv
#views
class AllAgenciesView( TemplateView):
template_name='agencies.html'
class AllAgenciesListView(ServerSideDatatableView):
def get_queryset(self):
agencies = SettingsAgency.objects.using('agency-namespace').filter(id=self.kwargs['id'])
return agencies
это в шаблоне
#in anchor tag(html)
<a href="{% url 'all-agency' id=2 %}" ><div>Agencies</div></a>
в адресной строке это будет выглядеть следующим образом:
http://127.0.0.1:8000/all-agency/2
Теперь я хочу передать 'id' в представления, основанные на классе, но когда я сделал filter(id=self.kwargs['id')
. я получил ответ KeyError: 'id'
я попробовал другой способ, который
filter(id=self.kwargs.get('id'))
и он возвращает None
, когда я print(agencies)
другой способ, который я пробовал
filter(id=self.request.GET.get('id'))
это также вернуло то же самое None
Вы вызываете неправильное представление в ваших путях, вы должны вызвать AllAgenciesListView
вместо AllAgenciesView
.
Исправленная версия:
#url
path('all-agency/<int:id>', AllAgenciesListView.as_view(), name='all-agency'),