Django: как перенести исключение "страница не найдена" и контекст из функции в представление на основе класса?
Я конвертирую простую функцию в представление на основе классов. Я нашел хороший ресурс с примерами, который помог мне в прошлом лучше понять всю тему (можно найти здесь), но я не смог найти хороший пример того, как обрабатывать исключения, связанные со страницей в представлении на основе класса, когда страница не найдена (например, кто-то делает опечатку в URL).
Я также не уверен, как обрабатывать дополнительный контекст, который я хочу также передать в представление на основе класса.
Я был бы признателен за помощь и предложения, основанные на этом простом примере ниже. Моя цель - импортировать main View
с помощью `from django.views import View' и поместить всю логику в этот класс вместо этой функции.
def meetup_details(request, meetup_slug):
try:
selected_meetup = Meetup.objects.get(slug=meetup_slug)
return render(request, 'meetups/meetup-details.html', {
'meetup_found': True,
'meetup_title': selected_meetup.title,
'meetup_description': selected_meetup.description
})
except Exception as exc:
return render(request, 'meetups/meetup-details.html', {
'meetup_found': False
})
class MeetupDetailView(DetailView):
model = Meetup
template_name = "meetups/meetup-details.html"
queryset = Meetup.objects.all()
def get_object(self):
try:
self.meetup = Meetup.objects.get(slug=self.kwargs['slug'])
except Exception as exc:
self.meetup = None
return self.meetup
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
if self.meetup:
meetup_found = True
context['meetup_title'] = self.meetup.title
context['meetup_description'] = self.meetup.description
else:
meetup_found = False
context['meetup_found'] = meetup_found
return context