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)