2017-02-22 54 views
0

因此,我正在開發一個使用Django框架的應用程序,並且我需要HTML表單來插入/刪除和更新數據庫中的數據。我能夠使窗體更新數據,但我似乎無法找到任何有關如何創建一個創建窗體和刪除按鈕的信息。 我試過了,沒有成功:Django rest框架 - 從HTML中刪除模型對象

HTML

<form action="{% url 'conta_details_html' conta.id %}" data-method="delete"> 

    <input type="submit" value="delete"> 
</form> 

瀏覽:

class ContaDetailsHTML(APIView): 
    renderer_classes = [TemplateHTMLRenderer] 
    template_name = 'conta_details.html' 

    def get(self, request, pk): 
     user = request.user 
     conta = get_object_or_404(Conta, pk=pk,user=user) 
     serializer = ContaDetailsSerializerHTML(conta) 
     return Response({'serializer': serializer, 'conta': conta}) 

    def delete(self,request,pk): 
     """Deletes a transaccao""" 
     user = request.user 
     if not user.is_authenticated: 
      return Response(status=status.HTTP_403_FORBIDDEN) 
     conta = get_object_or_404(Conta, pk=pk, user=user) 
     serializer = ContaDetailsSerializerHTML(conta,many=False) 
     if conta: 
      conta.delete() 
      return Response(status=status.HTTP_200_OK) 
     return Response(serializer.errors,status=status.HTTP_400_BAD_REQUEST) 

也許我沒有得到的HTML語法正確,但更新的形式是很容易,如下所示:

<form action="{% url 'conta_details_html' conta.id %}" method="POST"> 
    {% csrf_token %} 
    {% render_form serializer %} 
    <input type="submit" value="Save"> 
</form> 

任何想法 ?

編輯:

網址:

url(r'^api/html/contas/(?P<pk>[0-9]+)/$', views.ContaDetailsHTML.as_view(), name='conta_details_html'), 

回答

0

哦甚至刪除是很容易。你錯過了這裏的一些東西。 1. DELETE是一個HTTP動詞,表單中的您的方法字段可以採用其中之一。

<form action="{% url 'conta_details_html' conta.id %}" data-method="delete" method="DELETE"> 

    <input type="submit" value="delete"> 
</form> 
  • 在你刪除視圖,您試圖serialiaze但你並不需要。

    def delete(self, request, pk): 
        """Deletes a transaccao""" 
        user = request.user 
        if not user.is_authenticated: 
         return Response(status=status.HTTP_403_FORBIDDEN) 
        conta = get_object_or_404(Conta, pk=pk, user=user) 
        conta.delete() 
        return Response(status=status.HTTP_200_OK) 
    
  • +0

    是不是很簡單?我試過,但是當我按下按鈕時,什麼也沒有發生 –

    +0

    我編輯了這個問題以提供更多信息 –

    +0

    您可以嘗試一個基於API的DELETE請求,它應該可以工作。包含DELETE作爲操作的表單存在兼容性問題。其他明智的做法是使端點api/html/contas /(?P [0-9] +)/刪除並使用相同的方式寫入POST處理程序。 –