0

I am trying to do something like the following to work, but I keep receiving the error 'RegionsView' object has no attribute 'method'. What am I doing wrong? Thanks

#views.py

class _LanguageMixin(object):

    def dispatch(self, request, *args, **kwargs):
        self.langcode = kwargs.pop("langcode")
        self.language = get_object_or_404(Language, pk=self.langcode)
        return super(_LanguageMixin, self).dispatch(self, request, *args, **kwargs)

    def get_context_data(self, **kwargs):
        context = super(_LanguageMixin, self).get_context_data(self, **kwargs)
        context.update({"language": self.language,
                        "languages": Language.objects.values_list('code',
                                                                  flat=True)})
        return context


class RegionsView(_LanguageMixin, TemplateView):
    template_name = "regions.html"

    def get_context_data(self, **kwargs):
        context = super(RegionsView, self).get_context_data(self, **kwargs)

        regions = #......

        context.update({"regions": regions})
        return context


#urls.py

url(r'^(?P<langcode>[a-zA-Z-]+)/regions/$', RegionsView.as_view(), name='regions')
Mihai Zamfir
  • 2,167
  • 4
  • 22
  • 37

1 Answers1

2
return super(_LanguageMixin, self).dispatch(request, *args, **kwargs)

instead of

return super(_LanguageMixin, self).dispatch(self, request, *args, **kwargs)

(request.method is used in the dispatch function, but you use self object)

knbk
  • 52,111
  • 9
  • 124
  • 122
erthalion
  • 3,094
  • 2
  • 21
  • 28