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

时间:2020-09-16 09:28:57

标签: python django for-loop url-routing

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

当前,当我单击主页上某个条目的链接时,在这种情况下,该条目称为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

1 个答案:

答案 0 :(得分:1)

使用entry作为entry函数。做:

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