Ошибка Djange NoReverseMatch - не найден реверс для 'edit' без аргументов

В приложении Django, которое я создаю для курса, я пытаюсь передать параметр из одного шаблона в функцию в views.py через путь url.

Определение пути в urls.py содержит имя параметра, и это же имя требуется функции в views.py.

Ссылка в моем шаблоне указывает на правильный путь url и называет значение параметра, но я все равно получаю ошибку NoReverseMatch. Странно, потому что у меня есть другой url-путь, который требует параметра и который работает отлично.

entry.html Вот ссылка на путь с именем edit в urls.py. Я хочу передать значение переменной entryTitle в url как entry:

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

{% block title %}
    {{ entryTitle }}
{% endblock %}

{% block body %}

    {{ entry|safe }}

    <button>
        <a href="{% url 'edit' entry=entryTitle %}">Edit Entry</a>
    </button>

{% endblock %}

urls.py путь edit является последним, определенным в urlpatterns

from django.urls import path

from . import views

urlpatterns = [
    path("", views.index, name="index"),
    path("wiki/<str:entry>", views.entry, name="entry"),
    path("search", views.search, name="search"),
    path("new", views.new_page, name="new"),
    path("wiki/edit/<str:entry>", views.edit, name="edit")
]

views.py Это функция редактирования, требующая entry в качестве аргумента

def edit(request, entry):
    if request.method == "POST":
        #Edit file and redirect
        form = EditPageForm(request.POST)
        if form.is_valid():
            content = form.cleaned_data["content"]
            util.save_entry(entry, content)
            return HttpResponseRedirect(reverse('entry', kwargs={'entry': entry}))
    else:
        #Load form with initial values filled
        content = util.get_entry(entry)
        form = EditPageForm(initial={"content": content})
        return render(request, "encyclopedia/edit.html", {
           "editform": form,
            "entryTitle": entry
        })

При нажатии на ссылку в файле entry.html возникает следующая ошибка:

NoReverseMatch at /wiki/edit/HTML
Reverse for 'edit' with no arguments not found. 1 pattern(s) tried: ['wiki/edit/(?P<entry>[^/]+)$']

Если я просматриваю источник страницы на entry.html на сервере, эта ссылка правильно отображает путь с правильным значением для entryTitle, что, как я думаю, означает, что какая-то связь должна происходить между шаблоном и urls.py, но затем путь не найден, когда ссылка нажата.

Вот 'view page source' для entry.html с "HTML" в качестве значения, содержащегося в entryTitle:

<button>
        <a href="/wiki/edit/HTML">Edit Entry</a>
    </button>

Кто-нибудь видит что-то неладное в моем коде или имеет идеи, как я могу устранить неполадки? Застрял на этом уже несколько дней. Спасибо

Вернуться на верх