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'),
是不是很简单?我试过,但是当我按下按钮时,什么也没有发生 –
我编辑了这个问题以提供更多信息 –
您可以尝试一个基于API的DELETE请求,它应该可以工作。包含DELETE作为操作的表单存在兼容性问题。其他明智的做法是使端点api/html/contas /(?P [0-9] +)/删除并使用相同的方式写入POST处理程序。 –