【发布时间】:2021-07-22 23:04:40
【问题描述】:
这是我在previous question 中询问的同一问题的延伸。
我现在遇到的问题是,在解决了 trans 视图功能的问题并期望程序运行没有问题之后,我收到以下错误
NoReverseMatch at /wiki/Python/edit
Reverse for 'edit' with keyword arguments '{'title': ''}' not found.
考虑到我 AM 在 html 中传递标题参数并在 urls.py 中设置编辑视图函数和 urlpath 以期望标题,我这辈子都无法理解论据。
当我仔细查看回溯时,它会突出显示编辑视图功能中的这段代码。
return render(request, "encyclopedia/edit.html", {
"form": EntryForm(initial={
"title": title,
"content": entry
})
})
但我不明白这里的问题是什么?
这是我正在进行的项目的最后一部分,因此我将非常感谢任何和所有帮助。
下面是相关代码。
HTML
entry.html
<!-- The edit button in the entry's page -->
<form action="{% url 'wiki:trans' %}" method="POST">
{% csrf_token %}
<input type=hidden value={{title}} name="title">
<input type=submit value="Edit">
</form>
edit.html
<!-- the edit page -->
{% block body %}
<h1>Edit Entry</h1>
<br>
<form action="{% url 'wiki:edit' title=title %}" method="POST">
{% csrf_token %}
{{form}}
<input type="submit" value="Save" id="save">
</form>
{% endblock %}
view.py
class EntryForm(forms.Form):
title = forms.CharField(label="Title")
content = forms.CharField(widget=forms.Textarea)
def trans(request):
title = request.POST.get("title")
return redirect("wiki:edit", title=title)
def edit(request, title):
if request.method == "GET":
entry = util.get_entry(title)
return render(request, "encyclopedia/edit.html", {
"form": EntryForm(initial={
"title": title,
"content": entry
})
})
else:
form = EntryForm(request.POST)
if form.is_valid():
title = form.cleaned_data["title"]
content = form.cleaned_data["content"]
util.save_entry(title, content)
return redirect("wiki:title", title=title)
urls.py
app_name = "wiki"
urlpatterns = [
path("", views.index, name="index"),
path("search", views.search, name="search"),
path("new", views.new, name="new"),
path("trans", views.trans, name="trans"),
path("<str:title>/edit", views.edit, name="edit"),
path("random", views.rand, name="random"),
path("<str:title>", views.title, name="title")
]
【问题讨论】: