python - 重定向错误 - NoReverseMatch:使用关键字参数'{'title':'Python'}'反转'edit'
问题描述
我正在开发一个允许用户创建、显示和编辑条目的应用程序。现在我正在研究编辑功能。我想要做的是有一个编辑按钮(实际上是一个通过隐藏输入发送数据的表单),它将条目的标题发送到一个名为 trans 的视图,其唯一目的是重定向到编辑视图,我这样做的原因这样当我在编辑视图上工作时,我可以简化流程,如果请求方法是 GET,它会显示带有表单的页面,用户可以在其中编辑条目,如果它是发布的,则编辑视图可以接收更改并保存它们,而不必担心从条目页面重定向。
问题在于每次单击编辑按钮时都会出现错误:
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)
网址.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")
]
解决方案
尝试/
在每个网址的末尾添加一个,如下所示:
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")
]
还可以尝试使用 reverse 并将标题作为 arg 传递给您views.py
:
return redirect(reverse('wiki:title', args=[title]))
推荐阅读
- sql - 如何使用匿名块内的调用过程将行插入任何表
- rust - 如何为带有盒装闭合的结构派生克隆?
- html - 调整屏幕大小时更改 div 元素的大小
- ios - “数据计数”iOS的Tensorflow解释器抛出错误
- python - Powershell - 将两条管道合二为一
- javascript - react material-ui CardMedia组件中的自动播放视频
- python - 如何摆脱电报机器人中盘旋的小丑蛙?
- csv - 下载 .CSV 文件时,缺少 CRLF 换行符,但 Excel 可以正常加载。我可以在不加载 Excel 的情况下修复 CRLF 吗?
- arrays - C中的二维字符串数组:
- java - BigInteger 操作的运行时?