Джанго попробуй исключение в классе

SELECT * FROM table1 LEFT JOIN table2 on table1.id = table2.id
0
задан Giranyx Pornasdoro 20 March 2019 в 22:04
поделиться

2 ответа

CBV хороши, когда вам нужно наследование или вам нужно иметь дело с разными методами HTTP, чтобы иметь один и тот же маршрут. Если это не так, FBV - лучший выбор. При этом, для того, что вы пытаетесь сделать, вы должны просто FormView, который будет обрабатывать все о почте и формах.

Что-то вроде:

class BookViewSet(FormView):
form = CommentForm
template_name = 'catalog/book_detail.html'

def form_valid(self, form):
    self.send_mail(form.cleaned_data)
    return super(BookViewSet, self).form_valid(form)
0
ответ дан Stargazer 20 March 2019 в 22:04
поделиться

Если вы работаете с формами, вы должны использовать CreateView или FormView, а не DetailView. Вот пример реализации, который, как видите, немного сложен для новичка в Django:

from django.views.generic import CreateView


class BookDetailView(NeverCacheMixin, CreateView):
    form_class = CommentForm
    template_name = 'catalog/book_detail.html'

    def dispatch(self, request, *args, **kwargs):
        book_slug = self.kwargs.get('slug')  # url variables are stored in self.kwargs
        self.book = get_object_or_404(Book, slug=book_slug)  # attach book to your view
        return super().dispatch(request, *args, **kwargs)

    def get_context_data(self, **kwargs):
        # context data passed to template
        kwargs['book'] = self.book
        kwargs['most_recent'] = Book.objects.order_by('-timestamp')[:3]

        if request.user.is_anonymous:
            user_membership = None
        else:
            try:
                user_membership = Customer.objects.get(user=self.request.user)
            except Customer.DoesNotExist:
                user_membership = None
        kwargs['user_membership'] = user_membership
        return super().get_context_data(**kwargs)

    def form_valid(self, form):
        instance = form.save(commit=False)
        instance.user = self.request.user
        instance.post = self.book
        instance.save()
        return redirect(self.book.get_absolute_url())
0
ответ дан Pedro 20 March 2019 в 22:04
поделиться
Другие вопросы по тегам:

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