簡體   English   中英

無法追溯 NoReverseMatch 錯誤:使用 arguments '('',)' 反向'更新'

[英]Couldn't trace back NoReverseMatch Error: Reverse for 'update' with arguments '('',)' not found

我再次面臨與 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 %}

add.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 %}

我嘗試通過更新數據庫來編輯現有任務。 但是,會發生此錯誤:未找到 arguments '('',)' 的“更新”反向。 嘗試了 1 種模式:['aufgabenzettel/update/(?P<aufgabenzettel_id>[0-9]+)$']並且錯誤在 views.py 的第 33 行中標記為return render(request, "aufgabenzettel/edit.html", {

一如既往,我非常感謝每一個提示或解決方案!

你需要更換

{% url 'update' aufgabenzettel.id %}

{% url 'update' details.id %}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM