Django - 如何删除文章?

时间:2015-06-19 19:56:36

标签: python django

我试图在框架django上创建一个按钮,让我在我的博客上删除我自己的文章。我尝试为此功能创建代码,但它无法正常工作。

views.py

if(request.GET.get('delete')):  #if the button is clicked
    delete_article = get_object_or_404(Article, id=id)

    if request.POST:
        form = DeleteNewForm(request.POST, request.FILES)

        if form.is_valid(): 
            delete_article.delete()
            return HttpResponseRedirect("/")

template.html

<form enctype='multipart/form-data' action="." method="post" class="form"  autocomplete="off" autocorrect="off">
    {% csrf_token %}
    <div class="form-group">TITRE
      {{ form.title.errors }}
      {{ form.title }}
    </div>
    <div class="form-group">CONTENU
      {{ form.media }}
      {{ form.contenu.errors }}
      {{ form.contenu }}
    </div>
    <div class="form-group">
      {{ form.image.errors }}
      {{ form.image }}
   </div>
   <input type="submit" class="btn btn-default" value="Edit Article"/>
   <input type="submit" class="btn btn-default" value="Delete Article" name="delete">
</form>

以下是我提交表单时发生的事情:我没有重定向到索引,因为它应该重定向我并且文章尚未删除。

是否有问题不允许我删除这些内容中的文章?

1 个答案:

答案 0 :(得分:0)

我不知道你在视图或模板中做了什么。但是,如果我想删除某些内容,我只需为其定义一个单独的视图。

# views.py

from django.views.generic.base import View

class DeleteView(View):
    def post(self, request *args, **kwargs):
        article = get_object_or_404(id=request.POST['article_id'])
        # perform some validation, 
        # like can this user delete this article or not, etc.
        # if validation is successful, delete the article
        article.delete()
        return HttpResponseRedirect('/')

您的模板应该是这样的:

<form action="/url/to/delete/view/" method="POST">
    {% csrf_token %}
    <input type="hidden" value="{{ article.id }}">
    <input type="submit" value="Delete">
</form>