TypeError:得到了意外的关键字参数“ entry”

问题描述

我正在创建一个百科全书库项目。主页上是条目列表,我希望所有条目都链接到其条目页面

当前,当我单击主页上某个条目的链接时,在这种情况下,该条目称为CSS,这是我得到的错误

/ wiki / CSS /中的

TypeError entry()获得了意外的关键字参数“ entry” 请求方法:GET 请求网址:http://127.0.0.1:8000/wiki/CSS/

views.py

def css(request):
    return render(request,"entries/css.html",{
        "css_entry": util.get_entry("css")
    })

def entry(request):
    return render(request,entry,"encyclopedia/index.html",{
        "entry": util.get_entry({"entry"})
})

urls.py

urlpatterns = [
    path("",views.index,name="index"),path("css/",views.css,name="css"),path("<str:entry>/",views.entry,name="entry")
]

index.html

<ul>
 {% for entry in entries %}
    <li><a href = "{% url 'entry' entry %}">{{ entry }}</a></li>
 {% endfor %}
</ul>

令人沮丧的是,如果我进入浏览器:http://127.0.0.1:8000/wiki/CSS/可以正常工作,并且页面可以正常加载,但是当我单击主页上的链接时却无法正常工作。另外,如果我删除条目参数,将其保留为{%url'entry'%},则主页停止工作,并且出现以下错误

/ wiki /上的noreverseMatch 找不到“ CSS”的反向符号。 “ CSS”不是有效的视图函数或模式名称。 请求方法:GET 要求网址:http://127.0.0.1:8000/wiki/ Django版本:3.1.1 异常类型:noreverseMatch

解决方法

使用entry作为entry函数。做:

def entry(request,entry):
    return render(request,entry,"encyclopedia/index.html",{
        "entry": util.get_entry({"entry"})
    })