2017-04-30 47 views
0

我想創建一個位於HTML表格中的按鈕,點擊時會從數據庫中刪除一條記錄(本例中爲文章)。我通過文章pk就像我與其他鏈接一樣,但我無法弄清楚如何使刪除發生。我在網上搜索和幫助文件,但我是新的,真的需要有人爲我全力以赴。 URL和View應該是什麼樣的?Django點擊HTML按鈕時刪除數據庫記錄

HTML:

<a href="{% url 'remove_article', article_pk=articles.pk %}"><span class="glyphicon glyphicon-remove-circle"></span></a> 

URL(第二網址):

urlpatterns = [ 
    url(r'^$', views.CompanyList.as_view(), name='company_list'), 
    url(r'^company/(?P<pk>[0-9]+)/$', views.CompanyDetails.as_view(), name='company_details'), 
    url(r'^company/(?P<pk>[0-9]+)/remove$', views.CompanyDetails.delete_article(), name='remove_article'), 
    url(r'^company/transcript/(?P<transcript_id>[0-9]+)/$', views.TranscriptList.as_view(), name='transcript_details'), 
] 

VIEW(此頁):

class CompanyDetails(generic.DetailView): 
    model = Company 
    template_name = 'company_details.html' 
    context_object_name = 'articles' 

    def get_queryset(self): 
     return Articles.objects.filter(company_id=self.kwargs.get('company_id')).order_by('-date') 

    def get_context_data(self, **kwargs): 
     pk = self.kwargs.get('pk') 
     context = super(CompanyDetails, self).get_context_data(**kwargs) 
     context['articles'] = Articles.objects.filter(company_id=pk).order_by('-date') 
     context['company'] = Company.objects.filter(id=pk) 
     context['transcripts'] = Transcripts.objects.filter(company_id=pk) 
     return context 

    # Here is where I'm struggling... 
    def delete_article(): 
     article = Articles.objects.get(pk='article_pk') 
     article.delete() 

回答

1

的Django有一個內置的DeleteView,所以可能最好使用它。此外,出於安全原因,您確實應該使用表單,以便您可以POST到此視圖。 (其中鏈接的DeleteView提供了一個例子。)

+0

我之前讀過,但它對我沒有意義。最後想到它遵循YouTube上的這個例子https://www.youtube.com/watch?v=5Ez2NXOX9zY – pheeper

相關問題