2017-10-09 121 views
1

所以我一直在建立在Django網站與服務器的表(IP,用戶等)刪除使用Django的項目按鈕僅刪除第一個項目

我用mysql。

對於每個項目,我添加了一個刪除和編輯按鈕。 但是,刪除按鈕刪除服務器旁邊的按鈕總是而不是的第一項!

有行 -

我試圖把server.id,{{server.id}} ..沒有奏效。 有沒有人有任何想法?

PS 當我在確認詢問是否要刪除server.ServerName ..它僅要求第一臺服務器,即使它是在循環的名字..

index.html-

{% for server in posts %} 

    <tr> 
     <div class ="server"> 
     <td>{{ server.ServerName }}</td> 
     <td>{{ server.Owner }}</td> 
     <td>{{ server.Project }}</td> 
     <td>{{ server.Description }}</td> 
     <td>{{ server.IP }}</td> 
     <td>{{ server.ILO }}</td> 
     <td>{{ server.Rack }}</td> 
     <td>{{ server.Status }}</td> 

     <td> 
     </div> 

        <button type="button" class="btn btn-primary" data-toggle="modal" href="#delete-server-{{server.id}}" data-target="#DeleteItem">Delete <span class="glyphicon glyphicon-trash" </span></button> 
        <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#DeleteItem">Edit <span class="glyphicon glyphicon-pencil" </span></button> 
        <div id ="DeleteItem" class="modal fade" role="document"> 
         <div class="modal-dialog" id="delete-server-{{server.id}}"> 
           <div class="modal-content"> 
            <div class="modal-header"> 
             <h5 class="modal-title">Delete Confirmation</h5> 
             <button type="button" class="close" data-dismiss="modal" aria-label="Close"> 
          <span aria-hidden="true">&times;</span> 
           </button> 
            </div> 
            <div class="modal-body"> 
            <form action="{% url 'delete_post' server.id %}" method="post">{% csrf_token %} 
             <h6>Are you sure you want to delete {{ server.ServerName }}?</h6> 

             <input type="submit" class="btn btn-danger btn-md" value="Confirm delete"/> 
              <button type="submit" class="btn btn-secondary" data-dismiss="modal">Cancel</button> 

            </form> 
           </div> 
           </div> 


        </div> 

     </td> 
      </div> 
    </tr> 
      {% endfor %} 
</tbody> 

views.py

from django.shortcuts import render_to_response 
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 

class HomeView(TemplateView): 

    template_name = 'serverlist.html' 

    def get(self, request): 
     form = HomeForm() 
     posts = serverlist.objects.all() 
     args = {'form' : form, 'posts' : posts} 
     return render(request, self.template_name, args) 

    def post(self,request): 
     form = HomeForm(request.POST) 
     posts = serverlist.objects.all() 
     if form.is_valid(): # Checks if validation passed 
      post = form.save(commit=False) 
      post.save() 
      text = form.cleaned_data['ServerName'] 
      form = HomeForm() 
      return redirect('serverlist') 
     args = {'form': form, 'text': text} 
     return render(request, self.template_name,args) 


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

urls.py -

from django.conf.urls import url, include 
from DevOpsWeb.views import HomeView 
from DevOpsWeb.views import PostDelete 
# Uncomment the next two lines to enable the admin: 
from django.contrib import admin 
admin.autodiscover() 

urlpatterns = [ 
    # Examples: 
url(r'^$', HomeView.as_view(), name='serverlist'), 

# Uncomment the admin/doc line below to enable admin documentation: 
url(r'^admin/doc/', include('django.contrib.admindocs.urls')), 
url(r'^delete/(?P<pk>\d+)/$', PostDelete.as_view(), name="delete_post"), 
url(r'^django_popup_view_field/', include('django_popup_view_field.urls', namespace="django_popup_view_field")), 
# Uncomment the next line to enable the admin: 
url(r'^admin/', include(admin.site.urls)), 

]

+0

顯示您刪除視圖代碼,請 –

+0

添加網址和瀏覽文件 –

+0

這工作? ''{%url'delete_post'pk = server.id%}'' – Ivan

回答

0

嘗試在刪除按鈕來更改data-target,爲tbody這裏完整的代碼,你可以嘗試一下:

<tbody> 
    {% for server in posts %} 
    <tr> 
    <td>{{ server.ServerName }}</td> 
    <td>{{ server.Owner }}</td> 
    <td>{{ server.Project }}</td> 
    <td>{{ server.Description }}</td> 
    <td>{{ server.IP }}</td> 
    <td>{{ server.ILO }}</td> 
    <td>{{ server.Rack }}</td> 
    <td>{{ server.Status }}</td> 
    <td> 
     <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#Del{{server.id}}"> 
     Delete <span class="glyphicon glyphicon-trash"</span> 
     </button> 
     <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#Del{{server.id}}"> 
     Edit <span class="glyphicon glyphicon-pencil" </span> 
     </button> 
     <div id ="Del{{server.id}}" class="modal fade" role="document"> 
     <div class="modal-dialog" id="delete-server-{{server.id}}"> 
     <div class="modal-content"> 
      <div class="modal-header"> 
      <h5 class="modal-title">Delete Confirmation</h5> 
      <button type="button" class="close" data-dismiss="modal" aria-label="Close"> 
       <span aria-hidden="true">&times;</span> 
      </button> 
      </div> 
      <div class="modal-body"> 
      <form action="{% url 'delete_post' server.id %}" method="post"> 
       {% csrf_token %} 
       <h6>Are you sure you want to delete {{ server.ServerName }}?</h6> 
       <input type="submit" class="btn btn-danger btn-md" value="Confirm delete"/> 
       <button type="submit" class="btn btn-secondary" data-dismiss="modal">Cancel</button> 
      </form> 
      </div> 
     </div> 
     </div> 
     </td> 
    </tr> 
    {% endfor %} 
</tbody> 
+0

我試過..數據目標尋找div id ..改變後它確認刪除停止工作。 –

+0

@EilonAshkenazi我更新了答案,刪除了一些課程,但你可以試試'tbody' –

+0

完美。效果很好! –