2017-11-06 28 views
0

私はDjangoを初めて使用しています。クラスベースのビューを使用してレストランリストに削除オプションを追加しました。しかし、削除ボタンをクリックすると、空白の画面が表示され、コンソール に "メソッドは許可されていません(POST):" 以下はDeleteViewを使用してメソッドが許可されていない(POST)

は私のコード

views.py

from __future__ import unicode_literals 
from django.db.models import Q 
from django.http import HttpResponse, HttpResponseRedirect 
from django.shortcuts import render, get_object_or_404 
from django.views import View 
from django.contrib.auth.mixins import LoginRequiredMixin 
from django.views.generic import TemplateView, ListView, DetailView, 
CreateView,DeleteView 
from django.urls import reverse_lazy 

class RestaurantDeleteView(DeleteView): 
model = RestaurantLocation 
success_url = reverse_lazy('restaurants:list') 

urls.py

ですあなたのdelete.htmlで

delete.html

<form method="post" action="" >{% csrf_token %} 
<p>Are you sure you want to delete <strong> {{ obj }}</strong>?</p> 
<input type="submit" value="DELETE" /> 
</form> 
+1

は、完全なトレースバックを表示します。あなたはそれがPOSTと言うでしょうか?何らかの理由でフォームを "t"に設定しました。 –

+0

さて、私は自分のミスを訂正しましたが、まだ方法は許されていません。それを修正して、間違いであった – IvRen

答えて

0

方法は、現在、 "T"、 "ポスト" に変更し、それが動作するかどうかを確認します。

+0

を修正しました。そのおかげでありがたいですが、それでも動作しませんでした。 – IvRen

0

あなたのフォームアクションは、/というルートURLを指しています。 このルートはRestaurantListViewsによって決定され、GETメソッドを介してアクセスされます。 あなたの例では、POSTを使用してアクセスしようとしているため、エラーが発生しています。あなたのRestaurantDeleteViewのように、既存のレストランを指すようにフォームでactionプロパティを変更する使用させるように

<form method="post" action="{your_existing_restaurant_slug}/delete" > 
    {% csrf_token %} 
    ... 
... 
+0

ありがとうございました。 – IvRen

関連する問題