NoReverseMatch как следствие действия формы

Это мой urls.py:

from django.urls import path

from . import views

urlpatterns = [
    path("", views.rando, name="rando"),
    path("wiki", views.index, name="index"),
    path("create", views.create, name="create"),
    path("wiki/<str:title>", views.title, name="title"),
    path("wiki/<str:title>/edit", views.edit, name="edit"),
]

Это мой views.py:

def edit(request, title):
    if request.method=="POST":
        content = request.POST.get("content")
        util.save_entry(title, content)
        return redirect(f'/wiki/{title}')
    elif request.method=="GET":
        if title in util.list_entries():
            ge = util.get_entry(title)
            return render(request, "encyclopedia/edit.html", {
                "title": title,
                "ge": ge
            })
        else:
            return render(request, "encyclopedia/error.html")

Вот что я хочу отобразить (edit.html):

{% block body %}
    <h1>Edit {{title}}</h1>

    <form action="{% url 'edit' %}" method="post">
        {% csrf_token %} 
        <textarea id="ctnt" name="content">{{ge}}</textarea>
        <br>
        <input type="submit" value="Submit">
    </form>



{% endblock %}

Когда я хочу отправить форму выше с текущим действием, он выдает мне: NoReverseMatch at /wiki/CSS/edit но когда я удаляю действие, оно не выдает никакой ошибки. Не могли бы вы сказать мне, почему это происходит?

Спасибо

Метод

reverse ищет представление в пространстве именования. После этого он пытается передать необходимые переменные, но вы не указали ни одной с помощью {% url 'edit' %}. Это должно быть {% url 'name_space' first_argument second_argument etc. %}, так что в вашем случае: {% url 'edit' title %}.

Но, как я понимаю вашу точку зрения, это бессмысленно делать такое действие (потому что у вас есть редирект в if request.method=="POST" части), и по умолчанию старайтесь не делать этого. Хорошая практика - иметь такое поведение бэкенда непосредственно в ваших views.py файлах.

Для того чтобы это работало, django требует, чтобы вы передали заголовок в url-путь. Он должен быть примерно таким

<form action="{% url 'edit' wiki.title %}" method="post">

и не

 <form action="{% url 'edit' %}" method="post">
Вернуться на верх