重定向错误 - NoReverseMatch:反向使用关键字参数"{'title": 'Python'}' 的'edit'反向



我正在开发一个应用程序,该应用程序允许用户创建、显示和编辑条目。现在我正在做编辑功能。我想做的是有一个编辑按钮(实际上是一个通过隐藏输入发送数据的表单(,它将条目的标题发送到一个名为trans的视图,trans的唯一目的是重定向到编辑视图,我这样做的原因是,当我处理编辑视图时,我可以简化流程,如果请求方法是GET,它会显示带有表单的页面,用户可以在其中编辑条目,如果是post,编辑视图可以接收更改并保存它们,而不必担心从条目的页面重定向。

问题在于每次我点击编辑按钮时都会出现错误:

NoReverseMatch at /wiki/trans
Reverse for 'edit' with keyword arguments '{'title': 'Python'}' not found.

我已经反复检查了urls.py中的任何拼写错误或问题,或者命名方面的任何问题,但我就是找不到错误。这很令人沮丧,因为我认为这将是项目中最容易的部分。

以下是相关代码。如果有人指出我做错了什么,我将不胜感激。提前谢谢。

HTML

<div id="edit">
<form action="{% url 'wiki:trans' %}" method="POST">
{% csrf_token %}
<input type=hidden value={{title}} name="title">
<input type=submit value="Edit">
</form>
</div>

视图.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({
"content": entry,
"title": title
})
})
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("edit", views.edit, name="edit"),
path("random", views.rand, name="random"),
path("<str:title>", views.title, name="title")
]

尝试在每个url的末尾添加一个/,如下所示:

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("edit/", views.edit, name="edit"),
path("random/", views.rand, name="random"),
path("<str:title>/", views.title, name="title")
]

也可以尝试在views.py:上使用反向并将标题作为arg传入

return redirect(reverse('wiki:title', args=[title]))

最新更新