如何在Django中制作删除按钮

2024-03-04

请帮助我了解如何制作删除按钮,它必须删除一个Cat

class Cat(models.Model):
    class Meta():
        db_table = "cat"

    paw = models.IntegerField(default=4)
    name = models.CharField(max_length=30, null=False, default='Cat')
    age = models.IntegerField(default=False, null=False)
    species = models.CharField(max_length=50, blank=True)
    hairiness = models.IntegerField(default=False, null=False)

    def __str__(self):
        return self.name

这是我的views.py,希望能帮到你。 (这是我周一面试的需要)

from django.shortcuts import render, get_object_or_404
from .models import Cat
from .forms import CatForm
from django.shortcuts import redirect

def home(request):
    template = "base.html"
    queryset = Cat.objects.all()
    context = {
        "object_list": queryset
    }
    return render(request, template, context)

def new_cat(request):
    if request.method == "POST":
        form = CatForm(request.POST)
        if form.is_valid():
            cat = form.save(commit=False)
            cat.save()
            return redirect('/', pk=cat.pk)
    else:
        form = CatForm()
    return render(request, 'new_cat.html', {'form': form})

def cat_edit(request, pk):
    cat = get_object_or_404(Cat, pk=pk)
    if request.method == "POST":
        form = CatForm(request.POST, instance=cat)
        if form.is_valid():
            cat = form.save(commit=False)
            cat.save()
            return redirect('/', pk=cat.pk)
    else:
        form = CatForm(instance=cat)
    return render(request, 'new_cat.html', {'form': form})

网站是 asc 添加更多详细信息,但我只是不知道还能添加什么。

from django.conf.urls import url
from . import views


urlpatterns = [
    url(r'^$', views.home, name='home'),
    url(r'^new/$', views.new_cat, name='new_cat'),
    url(r'^edit/(?P<pk>[0-9]+)/$', views.cat_edit, name='cat_edit'),
]

首先,您应该创建一个cat_delete视图,应该看起来像这样:

def cat_delete(request, pk):
    cat = get_object_or_404(Cat, pk=pk)  # Get your current cat

    if request.method == 'POST':         # If method is POST,
        cat.delete()                     # delete the cat.
        return redirect('/')             # Finally, redirect to the homepage.

    return render(request, 'template_name.html', {'cat': cat})
    # If method is not POST, render the default template.
    # *Note*: Replace 'template_name.html' with your corresponding template name.

然后,您应该将该视图映射到您的urls.py:

from django.conf.urls import url
from . import views

app_name = 'cats'
# Note that app_name is added here!
# It is used as a namespace in order to reverse your urls better.
# See usage in template.

urlpatterns = [
    # ...
    url(r'^delete/(?P<pk>[0-9]+)/$', views.cat_delete, name='cat_delete')
]

在您的模板中,您应该创建一个表单删除按钮,这只会发送一个POST请求删除视图:

<form action="{% url 'cats:cat_delete' cat.id %}" method="post">
    {% csrf_token %}
    <input type="submit" value="Delete cat">
</form>

仔细看看表格action:

{% url 'cats:cat_delete' cat.id %}

在这里我使用的是app_name from urls.py我之前添加的目的是通过名称而不是路径解析您的网址。现在cats:cat_delete将评估为cats/delete/<pk>。当然你也通过了cat.id.

这应该可以解决删除实例的问题Cat模型。希望我有所帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在Django中制作删除按钮 的相关文章

随机推荐