Reputation: 701
I have my View Below I tried everything but Success-message not working in Django Class-based Createview. Where I am wrong?
Edit I added SuccessMessageMixin But still not working.
class TaskCraeteView(SuccessMessageMixin,LoginRequiredMixin,CreateView):
model=Task
success_message = "Task Craeted successfully!"
success_url = reverse_lazy('create-task')
login_url = 'login'
template_name = 'create-task'
form_class = TaskCreateForm
get_success_url ="/"
def form_valid(self,form):
print(form.cleaned_data)
form.instance.task_assign_by = self.request.user
server = form.save(False)
server.save()
# form.save()
task= Task.objects.latest('id')
print(type(task))
for users in form.cleaned_data['task_assign_to']:
TaskComplete.objects.create(completed_by=users, task_id= task)
for p in form.cleaned_data['task_perticulars']:
task.task_perticulars.add(p)
for t in form.cleaned_data['task_subtask_name']:
task.task_subtask_name.add(t)
return HttpResponseRedirect("add")
My template:-
{% if messages %}
{% for message in messages %}
<div class="alert alert-{{message.tags}}">
<a href="#" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">×</span>
</a>
{{ message }}
</div>
{%endif%}
{% endfor %}
{% endif %}
How to send a success message when I use HttpResponseRedirect?
Upvotes: 1
Views: 733
Reputation: 1847
In order to use the success_message
attribute, your view should also extend SuccessMessageMixin
. In addition to that, you need to set your success_url
. You can find more details from official docs. You need to update your view such as:
class TaskCraeteView(SuccessMessageMixin, LoginRequiredMixin, CreateView):
model=Task
success_url = '/success/'
success_message = "Task Craeted successfully!"
login_url = 'login'
template_name = 'create-task'
form_class = TaskCreateForm
def form_valid(self,form):
print(form.cleaned_data)
form.instance.task_assign_by = self.request.user
server = form.save(False)
server.save()
# form.save()
task= Task.objects.latest('id')
print(type(task))
for users in form.cleaned_data['task_assign_to']:
TaskComplete.objects.create(completed_by=users, task_id= task)
for p in form.cleaned_data['task_perticulars']:
task.task_perticulars.add(p)
for t in form.cleaned_data['task_subtask_name']:
task.task_subtask_name.add(t)
return HttpResponseRedirect("add")
Upvotes: 1
Reputation: 49
Inherit SuccessMessageMixin for class TaskCraeteView as shown below:
class TaskCraeteView(LoginRequiredMixin, SuccessMessageMixin, CreateView):
....
If still not works, try to change ordering of arguments, i.e swap between LoginRequiredMixin and SuccessMessageMixin.
Upvotes: 0