首页 > 解决方案 > 无法追溯 NoReverseMatch 错误:未找到带有参数 '('',)' 的“更新”的反向

问题描述

我再次面临与 NoReverseMatch 相关的错误。尽管如此,我还是找不到源头。这是我的代码:

网址.py

from django.urls import path

from . import views

urlpatterns = [
    path("", views.index, name="index"),
    path("<int:aufgabenzettel_id>", views.details, name="details"),
    path("add/", views.add, name="add"),
    path("delete/<int:aufgabenzettel_id>", views.delete, name="delete"),
    path("edit/<int:aufgabenzettel_id>", views.edit, name="edit"),
    path("update/<int:aufgabenzettel_id>", views.update, name="update")
]

模型.py

from django.db import models

# Create your models here.
class Aufgabenzettel(models.Model):
    Aufgabeselbst = models.CharField(max_length=64)

    def __str__(self):
        return f"{self.Aufgabeselbst}"

视图.py

from django.http.response import HttpResponseRedirect
from django.shortcuts import render
from django.urls import reverse

from .models import Aufgabenzettel

# Create your views here.
def index(request):
    return render(request, "aufgabenzettel/index.html", {
        "Aufgabenliste":Aufgabenzettel.objects.all()
    })

def details(request, aufgabenzettel_id):
    aufgabenzettel = Aufgabenzettel.objects.get(pk=aufgabenzettel_id)
    return render(request, "aufgabenzettel/details.html", {
        "details":aufgabenzettel
    })

def add(request):
    if request.method == "POST":
        Aufgabe = request.POST["Hinzufügen"]
        Aufgabenzettel.objects.create(Aufgabeselbst=Aufgabe)
        return HttpResponseRedirect(reverse("index"))
    return render(request, "aufgabenzettel/add.html")

def delete(request, aufgabenzettel_id):
    aufgabenzettel = Aufgabenzettel.objects.get(pk=aufgabenzettel_id)
    aufgabenzettel.delete()
    return HttpResponseRedirect(reverse("index"))

def edit(request, aufgabenzettel_id):
    aufgabenzettel = Aufgabenzettel.objects.get(pk=aufgabenzettel_id)
    return render(request, "aufgabenzettel/edit.html", {
        "details":aufgabenzettel
    })

def update(request):
    if request.method == "post":
        Aufgabejetzt = request.POST["Bearbeiten"]
        Aufgabejetzt.save()
        return HttpResponseRedirect(reverse("index"))
    return render(request, "aufgabenzettel/edit.html")

索引.html

{% extends "aufgabenzettel/layout.html" %}

{% block body %}
    <h1>Meine Aufgaben</h1>
    <ol>
        {% for Aufgabeselbst in Aufgabenliste %}
            <li>
                <a href="{% url 'details' Aufgabeselbst.id %}"> 
                    {{ Aufgabeselbst }}
                </a>
                <form action="{% url 'delete' Aufgabeselbst.id %}" method="post">
                    {% csrf_token %}
                <button type="submit">Löschen</button>
                </form>
                <form action="{% url 'edit' Aufgabeselbst.id %}" method="post">
                    {% csrf_token %}
                <button type="submit" value="{{ details }}">Bearbeiten</button>
                </form>
            </li>
        {% endfor %}
    </ol>
    <h2>
        <a href="{% url 'add' %}">Neue Aufgabe erstellen</a>
    </h2>
{% endblock %}

添加.html

{% extends "aufgabenzettel/layout.html" %}

{% block body %}
    <h1>Füge eine neue Aufgabe hinzu</h1>
    <form action="{% url 'add' %}" method="post">
        {% csrf_token %}
        <input type="text" name="Hinzufügen" placeholder="Neue Aufgabe">
        <button type="submit">Hinzufügen</button>
    </form>
{% endblock %}

编辑.html

{% extends "aufgabenzettel/layout.html" %}

{% block body %}
    <form action="{% url 'update' aufgabenzettel.id %}" method="post">
    {% csrf_token %}
        <input type="text" name="Bearbeiten" value="{{details}}">
        <button type="submit">Bearbeiten</button>
    </form>
    <a href="{% url 'index' %}">Zurück zu Aufgabe</a>
{% endblock %}

详细信息.html

{% extends "aufgabenzettel/layout.html" %}

{% block body %}
    <h1>{{ details }}</h1>
    <a href="{% url 'index' %}">Zurück zu Aufgabe</a>
{% endblock %}

我尝试通过更新数据库来编辑现有任务。但是,会发生此错误:未找到带有参数“(”,)“的“更新”的反向。尝试了 1 种模式: ['aufgabenzettel/update/(?P<aufgabenzettel_id>[0-9]+)$']并且在 views.py 的第 33 行中标记了错误return render(request, "aufgabenzettel/edit.html", {

一如既往,我非常感谢每一个提示或解决方案!

标签: pythondjangodatabase

解决方案


你需要更换

{% url 'update' aufgabenzettel.id %}

{% url 'update' details.id %}

推荐阅读