Best Practice for Django Mixins?

68 views Asked by At

I'm working on a Django project and creating a custom mixin, specifically a MessagesMixin for handling success and error messages. I'm using it with CreateView and UpdateView. I'm wondering about the best practice regarding the mixin's dependency on the view it is mixed into??.

I have created a two version of MessagesMixin, which one is the correct answer ???

Version 1:
class MessagesMixin:
    success_message = None
    fail_message = None
    fail_redirect_url = None

    def form_valid(self, form):
        response = super().form_valid(form)
        if self.success_message:
            messages.success(self.request, self.success_message.format(self.object))
        return response

    def form_invalid(self, form):
        super().form_invalid(form)
        if self.success_message:
            messages.error(self.request, self.fail_message.format(self.object))
        return redirect(self.fail_redirect_url)
Version 2:
class MessagesMixin(ModelFormMixin, View):
    success_message = None
    fail_message = None
    fail_redirect_url = None

    def form_valid(self, form):
        response = super().form_valid(form)
        if self.success_message:
            messages.success(self.request, self.success_message.format(self.object))
        return response

    def form_invalid(self, form):
        super().form_invalid(form)
        if self.success_message:
            messages.error(self.request, self.fail_message.format(self.object))
        return redirect(self.fail_redirect_url)
0

There are 0 answers