簡體   English   中英

成功消息在基於Django類的Createview中不起作用

[英]Success-message not working in Django Class based 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時如何發送成功消息?

為了使用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")

繼承類TaskCraeteView的SuccessMessageMixin,如下所示:

class TaskCraeteView(LoginRequiredMixin, SuccessMessageMixin, CreateView):
....

如果仍然無法解決問題,請嘗試更改參數的順序,即LoginRequiredMixin和SuccessMessageMixin之間的交換。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM