Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在我的表格的每一行中添加删除按钮?_Python_Html_Django_Sql Delete - Fatal编程技术网

Python 如何在我的表格的每一行中添加删除按钮?

Python 如何在我的表格的每一行中添加删除按钮?,python,html,django,sql-delete,Python,Html,Django,Sql Delete,进展如何?我正在学习用django编程。目前,我正在构建一个简单的应用程序,利用表单更新引用的表 现在我尝试在我的表格的每一行添加一个删除按钮,但是,除了我尝试了很多解决方案之外,我没有找到一个正确的方法 下面是我的代码: 网址 桌子 import django_tables2 as tables from django_tables2.utils import A from .models import Income class PersonTable(tables.Table):

进展如何?我正在学习用django编程。目前,我正在构建一个简单的应用程序,利用表单更新引用的表

现在我尝试在我的表格的每一行添加一个删除按钮,但是,除了我尝试了很多解决方案之外,我没有找到一个正确的方法

下面是我的代码:

网址

桌子

import django_tables2 as tables
from django_tables2.utils import A
from .models import Income

class PersonTable(tables.Table):
    delete = tables.LinkColumn('main:delete_item', args=[A('delete-id')], attrs={'a': {'class': 'btn'}})
    class Meta:
        model = Income
        template_name = "django_tables2/bootstrap.html"

观点

from django.shortcuts import render
from django.http import HttpResponse
from django.views.generic import ListView
from .models import Income
from .tables import PersonTable
from .forms import IncomeModelForm

def homepage(request):
    table = PersonTable(Income.objects.all())

    if request.method == 'POST':
         form = IncomeModelForm(request.POST)
         if form.is_valid():
             print("Il form è valido")
             new_input = form.save()

    else :
        form = IncomeModelForm()

    context= {"form": form,
            "table":table }
    return render(request, "app/base.html", context)


def delete_item(request, pk):

    Income.objects.filter(id=pk).delete()
    items = Income.objects.all()
    context = {
    'items': items
    }
    return render(request, 'app/base.html', context)
html

{%load static%}
{%load render_Tables from django_Tables 2%}
你好,世界!
{%csrf_令牌%}
{{form | crispy}}


{%render_table%}

我的表格显示“删除”列,但没有按钮,只有一个“-”。为什么?我的错误在哪里?

在表格中显示记录时,需要使用“删除表格”按钮添加额外的表格数据。例如:

<table>

{% for item in items%}

<tr>
<td>{{item.id}}</td>
<td>{{item.name}}</td>
<td>
    <form method="delete">
        <input type="hidden" value="{{item.id}}" name="delete-id">
        <input type="Submit">Delete</button>
    </form>
</td>
</tr>

{% endfor}
</table>
如果您使用的是django_tables2,只需在tables.py中添加此代码即可


检查request.method是否为DELETE,就像您检查帖子一样。我已编辑了答案,我已将方法更改为DELETE,而不是POST,以使其更清晰。我已根据您的提示调整了代码,但尚未生效:(,我已修改了上面帖子的代码。检查此答案我已按照链接调整了代码(我在这篇文章中更新了它)但是表中显示了“Delete”列,但没有按钮,只有一个“-”,为什么?我的错误在哪里?
from django.shortcuts import render
from django.http import HttpResponse
from django.views.generic import ListView
from .models import Income
from .tables import PersonTable
from .forms import IncomeModelForm

def homepage(request):
    table = PersonTable(Income.objects.all())

    if request.method == 'POST':
         form = IncomeModelForm(request.POST)
         if form.is_valid():
             print("Il form è valido")
             new_input = form.save()

    else :
        form = IncomeModelForm()

    context= {"form": form,
            "table":table }
    return render(request, "app/base.html", context)


def delete_item(request, pk):

    Income.objects.filter(id=pk).delete()
    items = Income.objects.all()
    context = {
    'items': items
    }
    return render(request, 'app/base.html', context)
{% load static %}
{% load render_table from django_tables2 %}
<!doctype html>
<html lang="it">
  <head>
    <!-- Required meta tags -->
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

    <title>Hello, world!</title>
  </head>
  <div class="container">
        <form class="" action="" method="post">
            {% csrf_token %}
            {{form|crispy}}
            <input type="submit" class="btn btn-danger" value="INVIA">
        </form>
</div>

<br>
<br>

<div class="container">
    {% render_table table %}
</form>
</div>

  </body>
</html>
<table>

{% for item in items%}

<tr>
<td>{{item.id}}</td>
<td>{{item.name}}</td>
<td>
    <form method="delete">
        <input type="hidden" value="{{item.id}}" name="delete-id">
        <input type="Submit">Delete</button>
    </form>
</td>
</tr>

{% endfor}
</table>
if request.method == 'DELETE':
        Person.objects.get(pk=request.DELETE['delete-id']).delete()
from django_tables2.utils import A  # alias for Accessor
class PersonTable(tables.Table):
    delete = tables.LinkColumn('main:delete_item', args=[A('delete-id')], attrs={
    'a': {'class': 'btn'}
    })