2017-11-27 16 views
0

私はUpdateViewを使ってフォームを使ってデータを編集しています。Djangoのウェブサイト - TemplateDoesNotExist at/edit/117/

TemplateDoesNotExist at /edit/117/ (or other pk...) 

DevOpsWeb/serverlist_form.html 
Request Method: POST 
Request URL: http://devopsweb:8000/edit/117/ 
Django Version: 1.11.6 
Exception Type: TemplateDoesNotExist 
Exception Value:  
DevOpsWeb/serverlist_form.html 
  1. 私はこれを取得なぜ:

    モーダルを編集して、私が編集し、確認をクリックした後、私はエラーを取得することができ、いくつかの形でポップアップされる[編集]ボタンをclikingした後、エラー?

  2. 私がモーダルを取得したときに、PKの情報が空白になるのはなぜですか?

誰でもこれらの質問がありますか?私は本当にこだわっ:( はありがとう

view.py-

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

     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() 
     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 of the forms passed 
      post = form.save(commit=False) 
      #if not form.cleaned_data['ServerName']: 
      #post.servername = " " 
      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') 

class PostEdit(UpdateView): 
    model = serverlist 
    #post = serverlist.objetcs.get(server_id=server_id) 
    fields = ['ServerName','Owner','Project','Description','IP','ILO','Rack','Status'] 
    success_url=reverse_lazy('serverlist') 

urls.py - !

from django.conf.urls import url, include 
from DevOpsWeb.views import HomeView 
from DevOpsWeb.views import PostDelete 
from DevOpsWeb.views import PostEdit 
from django.contrib import admin 
admin.autodiscover() 

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

    url(r'^admin/doc/', include('django.contrib.admindocs.urls')), 
    #DevOpsWeb:8000/Delete/ 
    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")), 
    url(r'^admin/', include(admin.site.urls)), 
    #DevOpsWeb:8000/edit/ 
    url(r'^edit/(?P<pk>\d+)/$', PostEdit.as_view(), name="edit_post"), 
] 

forms.py -

from django import forms 
from DevOpsWeb.models import serverlist 


class HomeForm(forms.ModelForm): 
    ServerName = forms.CharField(widget=forms.TextInput,max_length = 30,required=False) 
    Owner = forms.CharField(max_length = 50,required=False) 
    Project = forms.CharField(max_length = 30,required=False) 
    Description = forms.CharField(max_length = 255,required=False) 
    IP = forms.CharField(max_length = 30,required=False) 
    ILO = forms.CharField(max_length = 30,required=False) 
    Rack = forms.CharField(max_length = 30,required=False) 
    Status = forms.CharField(max_length = 30,required=False) 
    class Meta: 
     model = serverlist 
     fields = ('ServerName' ,'Owner','Project','Description','IP','ILO','Rack','Status',) 

class AutoCompleteModelChoiceField(forms.ModelChoiceField): 
    widget = forms.TextInput 
def clean(self, value): 
    value = super(AutoCompleteModelChoiceField, self).clean(value) 
    return value 


class serverForm(forms.ModelForm): 
    hotel = AutoCompleteModelChoiceField(queryset=serverlist.objects.all()) 

インデックス。 html(編集ボタンのある部分) -

  <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 <b>{{ server.ServerName }}</b> </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 'edit_post' server.id %}" method="post"> {% csrf_token %} 
           <!--<center> {{ form.as_p }} </center> --> 
                 {% for field in form %} 
                   <div class="fieldWrapper"> 
               {{ field.errors }} 
                     <!-- {{ field.label_tag }} --> 

           <small><b>{{ field.html_name }}<p align="left"></b> {{ field }}</small> </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> 
       </form> 
      </td> 
       </div> 
     </tr> 
       {% endfor %} 
+0

テンプレートに 'serverlist_form.html'というファイルがありますか? – cezar

+0

いいえ、私はこのテンプレートを持っていませんでした... しかし、事は私がポップアップのようなモーダルを使用していることです。そして、私はそれをクリックして同じページにリダイレクトするはずです。 私の編集は前に働いていました。私はいくつかの変更を行いました。それ以来、私はこのエラーを持っています。 –

+0

今は完璧です。前に空白のフォームではなく編集をクリックするとデータを取得できますか? –

答えて

2

あなたはUpdateView属性の一つ、template_name_suffixtemplate_nameまたはget_templates_names()をオーバーライドしていないので、あなたのビューが見られるデフォルトのテンプレート名は<model_name>_form.htmlです。あなたはそのテンプレートを持っていません

+0

正確に。私はそのテンプレートを持っていません。私は同じページを使用しているだけで、モーダル(小さなウィンドウ)をポップアップし、私がボタンをクリックした同じページに戻ってくることを確認した後に確認します。 ビューに何を追加する必要がありますか?どの属性を上書きする必要がありますか? –

+0

@EilonAshkenazi 'template_name = 'index.html''を使用しようとしました –

+0

私は devopsweb/edit/117にアクセスし、メインページを正常に表示しますが、データは表示されていないことを確認後、UpdateVIewの下に追加します... 私は - posts = serverlist.objects.all() を追加しようとしましたが、それでも何も表示されず、ホームページはデータベースエントリなしで動作しています..空のようです。 別のGetリクエストが必要なのでしょうか?おそらく、私は何とか、編集後にすべてのデータベースを取得する関数を呼び出す必要がありますか? –

関連する問題