2017-04-30 49 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

相关问题