2017-12-04 11 views
1

私はDjangoを使ってウェブサイトを構築しています。 そして、私は、モーダルフォームなしで表示された私の[編集]ボタンをクリックするとsomereasonのために、すべてのフォームを使用して辞書がすべて含まれている必要がありforms.server_id ... ..全く編集時に私のDjangoウェブサイトが表示されない

が表示されませんフォームはserver_idを使用しています... server_id編集時に以前のデータを表示するために使用します。

しかし、いくつかの理由で、それがすべてで任意のフォームを表示しません

...

enter image description here

のindex.html -

{% load static i18n util_filters %} 
<html lang="en"> 

<head> 
     <meta charset="utf-8"> 
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> 
     <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/css/bootstrap.min.css" integrity="sha384-/Y6pD6FV/Vv2HJnA6t+vslU6fwYXjCFtcEpHbNJ0lyAFsXTsjBbfaDjzALeQsN6M" crossorigin="anonymous"> 
     <link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/v/bs4/jq-3.2.1/jq-3.2.1/dt-1.10.16/af-2.2.2/b-1.4.2/fc-3.2.3/fh-3.1.3/kt-2.3.2/r-2.2.0/rg-1.0.2/rr-1.2.3/sc-1.4.3/sl-1.2.3/datatables.min.css"/> 

     <script src="https://use.fontawesome.com/3c2c6890cf.js"></script> 

     <script type="text/javascript" src="https://cdn.datatables.net/v/bs4/jq-3.2.1/jq-3.2.1/dt-1.10.16/af-2.2.2/b-1.4.2/fc-3.2.3/fh-3.1.3/kt-2.3.2/r-2.2.0/rg-1.0.2/rr-1.2.3/sc-1.4.3/sl-1.2.3/datatables.min.js"></script> 

     <nav class="navbar navbar-expand-lg navbar-light bg-light"> 
     <a class="navbar-brand" href="{% url 'serverlist' %}">DevOps Map</a> 
     <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation"> 
     <span class="navbar-toggler-icon"></span> 
     </button> 
     <div class="collapse navbar-collapse" id="navbarNav"> 
     <ul class="navbar-nav"> 

      <li class="nav-item"> 
      <a class="nav-link" href="{% url 'serverlist' %}">Servers</a> 
      </li> 
       <li class="nav-item"> 
        <a class="nav-link" href="{% url 'serverlist' %}">Switches</a> 
       </li> 

     </ul> 
     </div> 
    </nav> 

<style type="text/css"> 
.wrapper { 
    display:flex; 
} 
</style> 
</head> 

<body> 


<div class="container"> 

    <br> 
    <center><h1 class="display-4">DevOps Server List</h1></center> 
    <br> 

    <center><button type="button" class="save btn btn-outline-success btn-lg" data-toggle="modal" data-target=".AddServer">Add Server <i class="fa fa-server fa-lg" aria-hidden="true"></i></button></center> 
    <table class="table table-hover table-bordered table-condensed" cellspacing="0" width="1300" id="ServerTable"> 
    <thead> 

     <tr> 
     <th><center> #</center></th> 
     <th><center> Server Name </center></th></center> 
     <th><center> Owner </center></th></center> 
     <th><center> Project </center></th></center> 
     <th><center> Description </center></th></center> 
     <th><center> IP Address </center></th></center> 
     <th><center> ILO </center></th></center> 
     <th><center> Rack </center></th></center> 
     <th><center> Status </center></th></center> 
     <th><center> &nbsp;&nbsp;&nbsp;&nbsp; Actions &nbsp;&nbsp;&nbsp;&nbsp; </center></th></center> 


     </tr> 
     </thead> 
    <tbody> 

       {% for server in posts %} 


     <tr> 
      <div class ="server"> 
      <td></td> 
      <td><center>{{ server.ServerName }}</center></td> 
      <td><center>{{ server.Owner }}</center></td> 
      <td><center>{{ server.Project }}</center></td> 
      <td><center>{{ server.Description }}</center></td> 
      <td><center>{{ server.IP }}</center></td> 
      <td><center>{{ server.ILO }}</center></td> 
      <td><center>{{ server.Rack }}</center></td> 
      <td><h4><span class="badge badge-success">Online</span></h4></td></center> 

      <td> 

&nbsp;&nbsp;&nbsp;&nbsp; 
      <button type="button" class="btn btn-outline-danger" data-toggle="modal" href="#delete-server-{{server.id}}" 
      data-target="#Del{{server.id}}">Delete <i class="fa fa-trash-o"></i></button>&nbsp; 
      <button type="button" class="btn btn-outline-primary" data-toggle="modal" href="#edit-server-{{server.id}}" 
      data-target="#Edit{{server.id}}"> &nbsp;&nbsp;Edit&nbsp;   <i class="fa fa-pencil"></i></button> 
&nbsp; 

         <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> 
               <br> 
              <center><input type="submit" class="btn btn-danger btn-md" value="Confirm"/> 
               <button type="submit" class="btn btn-secondary" data-dismiss="modal">Cancel</button></center> 

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


         </div> 
      </div> 




      <div class="modal fade bd-example-modal-sm" id="Edit{{server.id}}" tabindex="-1" role="dialog" aria-labelledby="mySmallModalLabel" aria-hidden="true"> 
    <div class="modal-dialog modal-sm"> 
    <div class="modal-content"> 
         <div class="modal-header"> 
           <h5 class="modal-title">Edit Server <strong>{{ server.ServerName }}</strong> </h5> 
           <button type="button" class="close" data-dismiss="modal" aria-label="Close"> 
             <span aria-hidden="true">&times;</span> 
           </button> 
         </div> 
           <div class="modal-body"> 

                     {% with server.id as server_id %} 
                     {% with forms|get_by_key:server_id as edit_form %} 
             <form action="{% url 'edit_post' server_id %}" method="post"> {% csrf_token %} 

           <!--<center> {{ edit_form.as_p }} </center> --> 
             {% for field in forms.server_id %} 


                  <div class="fieldWrapper"> 

               {{ field.errors }} 
                     <!-- {{ field.label_tag }} --> 

           <small><strong>{{ field.html_name }}<p align="left"></b> {{ field }}</small> </strong> 

               {% if field.help_text %} 
               <p class="help">{{ field.help_text|safe }}</p> 
               {% endif %} 

                 </div> 

               {% endfor %} 
                   </div> 
       <div class="wrapper"> 
       &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
       <h2><button type="submit" class="save btn btn-success btn-lg">Confirm</button></h2>&nbsp;&nbsp;&nbsp; 
           <h2><button type="submit" class="btn btn-secondary btn-lg" data-dismiss="modal">Cancel</button></h2> 
       </div> 

       </form> 
       {% endwith %} 
       {% endwith %} 

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



<div class="modal fade AddServer" tabindex="-1" role="dialog" aria-labelledby="mySmallModalLabel" aria-hidden="true"> 
    <div class="modal-dialog modal-sm"> 
    <div class="modal-content"> 
      <div class="modal-header"> 
       <h5 class="modal-title">Add Server</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 method="post" novalidate> {% csrf_token %} 
        <!--<center> {{ form.as_p }} </center> --> 
          {% for field in form %} 
           <div class="fieldWrapper"> 
          {{ field.errors }} 
            <!-- {{ field.label_tag }} --> 

        <small><strong>{{ field.html_name }}</strong></small><p align="left"></b> {{ field }} </p> 

          {% if field.help_text %} 
          <p class="help">{{ field.help_text|safe }}</p> 
          {% endif %} 

          </div> 

       {% endfor %} 

       </div> 
       <div class="wrapper"> 
       &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
       <h2><button type="submit" class="save btn btn-success btn-lg" >Confirm</button></h2>&nbsp;&nbsp;&nbsp; 
       <h2><button type="submit" class="btn btn-secondary btn-lg" data-dismiss="modal">Cancel</button></h2> 
       </div> 
      </div> 
     </form> 
    </div> 
    </div> 
</div> 

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 

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: 
     # form = HomeForm(instance=post) 
     for post in posts: 
      forms[post.id] = HomeForm(instance=post) 
     args = {'form' : form,'forms': forms, 'posts' : posts} 
     #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() 



     if form.is_valid(): # Checks if validation of the forms passed 
      post = form.save(commit=False) 
      post.save() 
      #form = HomeForm() 
      return redirect('serverlist') 
     for post in posts: 
      forms[post.id] = HomeForm(instance=post) 
     args = {'form' : form, 'forms': forms, 'posts' : posts} 
     #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 
    #fields = ['ServerName','Owner','Project','Description','IP','ILO','Rack','Status'] 

    success_url = reverse_lazy('serverlist') 
    #def get_object(self): 
    # obj = get_object_or_404(Calification, pk=self.request.POST.get('pk')) 
    # return obj 
+0

'server.id'はどこから来ていますか?とにかく変数を使ってDjangoテンプレートの辞書内の項目を検索することはできません。とにかく –

+0

はどうなっていますか?完全なhtmlファイルを表示するためにインデックスを編集しました –

答えて

1

これは:

{% with server.id as server_id %} 
    {# ... #} 
    {{ forms.server_id.as_p }} 

は動作しません。forms["server_id"](=>リテラル文字列"server_id"をキーとして使用します)を検索します。カスタムテンプレートフィルタsuch as the one described hereが必要です。 Daniel Rosemanがコメントで正式に言及したように、serverがあなたのテンプレートのコンテキストにもあてはまるものを渡す必要があります。

NameErrorHomeView.postになることに注意してください。postsのコードにはコードをコピーして貼り付けますが、コードを貼り付ける部分ではありません。コピー貼り付けではなく、実際にこれを考慮する必要があります。

+1

Djangoがサポートしていても、 'server'がテンプレートに渡されないため、Djangoはこれをサポートしていても動作しません。 –

+0

{{server.id}}とすべての{{server.ServerName}}を渡しています –

+0

あなたはそうではありません。あなたはそれをどこでやっていると思いますか? –

関連する問題