首页 > 解决方案 > 成功消息在基于 Django 类的 Createview 中不起作用

问题描述

我在下面有我的视图我尝试了所有方法,但成功消息在基于 Django 类的 Createview 中不起作用。我哪里错了?

编辑我添加了 SuccessMessageMixin 但仍然无法正常工作。

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")

我的模板:-

{% 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">&times;</span>
                        </a>

                             {{ message }} 
                     </div>

                        {%endif%}

                    {% endfor %}
                    {% endif %}

使用 HttpResponseRedirect 时如何发送成功消息?

标签: djangodjango-templatesdjango-views

解决方案


为了使用该success_message属性,您的视图还应该扩展SuccessMessageMixin. 除此之外,您还需要设置您的success_url. 您可以从官方文档中找到更多详细信息。您需要更新您的视图,例如:

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")

推荐阅读