在尝试反转 django 模板 html 文件中的 url 时,会发生异常'NoReverseMatch'。我在视图函数中包含附加参数


def entry(request, name):
content = util.get_entry(name.strip())
if content == None:
content = "## Page was not found"
content = markdown(content)
return render(request, "encyclopedia/entry.html", {'content': content, 'title': name})
def edit(request,title):
content = util.get_entry(title.strip())
if content == None:
return render(request, "encyclopedia/edit.html", {'error': "404 Not Found"})

if request.method == "POST":
content = request.POST.get("content").strip()
if content == "":
return render(request, "encyclopedia/edit.html", {"message": "Can't save with empty field.", "title": title, "content": content})
util.save_entry(title, content)
return redirect("entry", name=title)
return render(request, "encyclopedia/edit.html", {'content': content, 'title': title})

util有帮助获取输入文件的名称,保存新条目或获取条目内容的文件。

{% extends 'encyclopedia/layout.html' %}
{% block title %}
{{title}}
{% endblock %}
{% block body %}
<a href="{% url 'edit' title %}" class="badge badge-info">Edit This Page</a>
{{entry | safe }}
{% endblock %}

布局有HTML的标准块码

edit.html包含HTML代码,在每个页面上提供一个按钮,以便我们可以编辑页面条目的内容,并传递name='content'用于要编辑的内容。


urlpatterns = [
path("", views.index, name="index"),
path("wiki/<str:name>", views.entry, name = 'entry'),
path("search", views.search, name= 'search'),
path("newpage",views.create,name='create'),
path("random",views.random,name='random'),
path("edit", views.edit, name='edit')
]

这是一个CS50w项目,我从其他来源参考。

您正在传递变量给url,而它实际上并不需要任何变量只需添加title参数来编辑路径

path("edit/<str:title>/", views.edit, name='edit')

当向django view传递参数时,你必须在url中设置它<type:argument_name>在视图参数中def viewname(request, variable1, variable2...): pass

最新更新