2017-10-04 13 views
3

私はDjangoで簡単なサイトプロジェクトを持っており、2番目のページにはマニュアルページとムービーの詳細があります。django htmlボタン付きオブジェクトを削除する

ムービーオブジェクトを削除できるムービーの詳細タブに削除ボタンを追加したいとします。

views.py

def movies_list(request): 
    return render(request, 'movies.html',{'movies':movies.objects.all()}) 


def movies_details(request,slug): 
    movies_details=MyModel.objects.all() 
    det=get_object_or_404(movies_details, slug_name=slug) 
    return render(request, 'movies_details.html',{'movies_details':movies_details,'det':det}) 

それを行うには良い方法は何ですか?新しいビューを使用して、このような

何か:

def delete(request, id): 
    note = get_object_or_404(Note, pk=id).delete() 
    return HttpResponseRedirect(reverse('movies_details.views.movies_details')) 

urls.py

url(r'^delete/(?P<id>\d+)/$','project.app.views.delete'), 

またはこのようないくつかの?

if request.POST.get('delete'): 
    obj.delete() 

またはいくつかのDjangoフォームを使用しますか?

+1

「Q&A」は、オピニオンベースの回答と炎戦を生成するため、このQ&Aウェブサイトのトピックではありません。あなたが問題を抱えているのでなければ、もっと好きなものを選んでください。つまり、GETまたはPOSTの代わりにDELETE HTTPメソッドを使用することもできます。 –

答えて

2

​​djangoの機能を使用できます。私はそれがより良いものになると思う。

from django.views.generic.edit import DeleteView 
from django.urls import reverse_lazy 

class DeleteTaskView(DeleteView): 
    template_name = 'template/delete.html' 
    model = Task 
    pk_url_kwarg = 'id' 

    def get_success_url(self): 
     return reverse_lazy('movies_details.views.movies_details') 
+0

これに対して私のプロジェクトであなたのコードをどのように変更する必要がありますか? 'Task'では私のモデル名だけを使用し、' template_name = 'template/delete.html''では 'movies_details.html'のようなテンプレートを使用できますか?最終的に私は自分のhtmlテンプレートに書く必要がありますか?申し訳ありませんが、私はあなたに新しいことをお伝えしています – Mar

+0

あなたのコードを動作させない 'pk_url_kwarg = 'id''の文法エラーを受け取ります – Mar

+0

@Mar、任意の名前をテンプレートとして使用し、 'id'ではなく' pk_url_kwarg'に 'url'で渡すものを使用します。 –

関連する問題