簡體   English   中英

django消息,用於成功刪除,添加或編輯項目

[英]django messages for a successfully delete,add or edit item

我已經開始使用django消息來創建項目。 它非常適合創建添加新項目。

但是..我希望每個動作都具有功能-刪除,創建,編輯(每個功能都有不同的按鈕)我只有發布功能..當我嘗試創建一條消息表示該項目已成功刪除時,這確實使我感到困惑..我怎么知道刪除已提交但未發布? 因為一切都通過發布功能進行。

PostEdit和Delete沒有消息所需的“請求”。

因此,到目前為止,我只有在每次創建服務器時都運行的messages.succuess。 我想要一條用於刪除,編輯,創建的其他消息,對於錯誤也一樣。

有人有線索嗎?

index.html-

{% if messages %}
    <ul class="messages">
        {% for message in messages %}
        <div class="alert alert-success alert-dismissible fade show" role="alert">
                <li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
                <button type="button" class="close" data-dismiss="alert" aria-label="Close">
                    <span aria-hidden="true">&times;</span>
                </button>
            </div>
        {% endfor %}
    </ul>
    {% endif %}

views.py-

# Create your views here.

from django.shortcuts import render_to_response
from django.shortcuts import get_object_or_404
from django.shortcuts import render, redirect
from django.template import RequestContext
from django.views.generic import TemplateView, UpdateView, DeleteView, CreateView
from DevOpsWeb.forms import HomeForm
from DevOpsWeb.models import serverlist
from django.core.urlresolvers import reverse_lazy
from simple_search import search_filter
from django.db.models import Q
from django.contrib import messages

class HomeView(TemplateView):

    template_name = 'serverlist.html'


    def get(self, request):

        form = HomeForm()
        query = request.GET.get("q")
        posts = serverlist.objects.all()

        forms = {}

        if query:
            posts = serverlist.objects.filter(Q(ServerName__icontains=query) | Q(Owner__icontains=query) | Q(Project__icontains=query) | Q(Description__icontains=query) | Q(IP__icontains=query) | Q(ILO__icontains=query) | Q(Rack__icontains=query))
        else:
            posts = serverlist.objects.all()
        for post in posts:
            forms[post.id] = HomeForm(instance=post)
        args = {'form' : form,'forms': forms, 'posts' : posts}

        return render(request, self.template_name, args)

    def post(self,request):
        form = HomeForm(request.POST)
        posts = serverlist.objects.all()
        forms = {}


        if form.is_valid(): # Checks if validation of the forms passed
            post = form.save(commit=False)
            post.save()
            messages.success(request,'{0} has been added successfully!'.format(post.ServerName))

            return redirect('serverlist')
        messages.error(request,'Servername is required, please refresh the page and try again.')
        for post in posts:
            forms[post.id] = HomeForm(instance=post)
        args = {'form' : form, 'forms': forms, 'posts' : posts}

        return render(request, self.template_name,args)


class PostDelete(DeleteView):
    model = serverlist
    success_url = reverse_lazy('serverlist')

class PostEdit(UpdateView):
    template_name = 'serverlist.html'
    model = serverlist
    form_class = HomeForm
    #messages.success(request,"The server has been edited successfully")
    #fields = ['ServerName','Owner','Project','Description','IP','ILO','Rack','Status']

    success_url = reverse_lazy('serverlist')

覆蓋deleteview中的delete方法以更改消息類型:

class PostDelete(SuccessMessageMixin, DeleteView):
    model = serverlist
    success_url = reverse_lazy('serverlist')
    success_message = "Object deleted"
    def delete(self, request, *args, **kwargs):
        messages.warning(self.request, self.success_message)
        return super(PostDelete, self).delete(request, *args, **kwargs)

您可以通過重寫UpdateView的更新方法來執行相同的操作。

class PostEdit(UpdateView):
    template_name = 'serverlist.html'
    model = serverlist
    form_class = HomeForm
    #messages.success(request,"The server has been edited successfully")

您不能像這樣在類定義中調用messages.success 調用必須使用postform_valid類的方法。

消息框架具有SuccessMessageMixin ,您可能會發現它很有用。 您將mixin添加到每個視圖中,並設置success_message

class PostDelete(SuccessMessageMixin, DeleteView):
    model = serverlist
    success_url = reverse_lazy('serverlist')
    success_message = "Object deleted"

有關更多信息,請參閱有關將消息添加到基於類的視圖的文檔。

暫無
暫無

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

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