【问题标题】:tried deleted data but failed to delete from django database尝试删除数据但未能从 django 数据库中删除
【发布时间】:2021-08-15 06:49:59
【问题描述】:

我已经创建了 models.py、views.py 和 urls.py,后来相应地更新了 data.html 文件,但是当我点击删除按钮时,它给了我一个错误。所以错误文件也附上以供参考。帮助表示赞赏并等待解决。

错误文件

Page not found (404)
Request Method: GET
Request URL:    http://127.0.0.1:8000/delete/
Using the URLconf defined in student.urls, Django tried these URL patterns, in this order:

admin/
[name='index']
export/ [name='export']
export-pdf [name='export-pdf']
register/ [name='register']
login/ [name='login']
home/ [name='home']
logout/ [name='logout']
upload/ [name='upload']
result/ [name='result']
dashbord/ [name='dashbord']
data/ [name='data']
delete/<int:id>
^static/(?P<path>.*)$
The current path, delete/, didn’t match any of these.

You’re seeing this error because you have DEBUG = True in your Django settings file. Change that to False, and Django will display a standard 404 page.

urls.py

path('data/', views.data, name='data'),
 path('delete/<int:id>', views.delete),

data.html

<a href="/edit/{{ student.id }}"  class="btn btn-success"><span>Edit</span></a          
<a href="/delete/{{data1.id}}" class="btn btn-danger">Delete</a>

views.py

def data(request):
    data1 = Contact.objects.all()
    # myFilter = OrderFilter()
    dict = {
        "data1":data1
    }
    

    return render(request, 'data.html', context=dict)

# Delete Data
def delete(request):
    data1 = Contact.objects.all(id=id)
    data1.delete()
    return redirect("/data")

model.py

from django.db import models
from django.db.models.fields import CharField
from django.contrib import admin

# Create your models here.


class Contact(models.Model):
    name = models.CharField(max_length=50, default="")
    contact = models.CharField(max_length=50, default='')
    address = models.TextField(max_length=50, default='')
    program = models.CharField(max_length=50, default='')
    email = models.CharField(max_length=50, primary_key=True, null=False, unique=True)
    w3review = models.TextField(max_length=60, default="")

    def __str__(self):
        return self.name

class Cv(models.Model):
    filename = models.CharField(max_length=20)
    upload = models.FileField(upload_to='cv')

    def __str__(self):
        return self.filename

【问题讨论】:

    标签: django django-models django-rest-framework django-views django-forms


    【解决方案1】:

    我想你之后没有指定身份证号码 http://127.0.0.1/delete:8000/--id-here--

    【讨论】:

    • 我如何获得 id#
    • 它是自动创建的。您只需要使用此 obj = Contact.objects.get(name=name_of_the_person) 来访问项目的 id 并将其传递给 url 通过执行 obj.id 获取它并将其传递给 url
    • 还是不行,请帮我解决这个问题
    • 您能否查看我的代码,我已阅读文档,但不适用于我的情况。这个帮助真的很实用。
    【解决方案2】:

    我认为您需要使用get() 方法而不是all() 方法。你的代码应该是这样的:

    def delete(self, request, id):
        data1 = Contact.objects.get(id=id)
        data1.delete()
        return redirect("/data")
    

    而且你必须根据@Ariel 的回答指定身份证号码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-22
      • 2013-05-28
      • 2017-12-05
      • 1970-01-01
      • 2018-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多