【问题标题】:TypeError: got an unexpected keyword argument 'entry'TypeError:得到了一个意外的关键字参数“条目”
【发布时间】:2021-01-03 02:39:27
【问题描述】:

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

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

/wiki/CSS/ 处的类型错误 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/ 它可以正常工作并且页面加载正常,但当我单击主页上的链接时却无法正常加载。另外,如果我删除 entry 参数,将其保留为 {% url 'entry' %} 则主页停止工作,我收到以下错误:

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

【问题讨论】:

    标签: python django for-loop url-routing


    【解决方案1】:

    作为您的entry 函数使用entry。做:

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

    【讨论】:

    • 我尝试了您所说的,但不幸的是,现在当我单击链接时出现错误:/wiki/CSS/ 处的 TemplateDoesNotExist。我猜这意味着我的文件夹的排列方式有问题?
    • entries/css.html 这应该是app_name/your_html_file。就像,你在入口功能上做了什么。请正确检查,应该有一些拼写错误或app_name错误或类似的东西。而且,冷静兄弟,你有这个:)
    猜你喜欢
    • 2016-09-17
    • 2012-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-08
    • 2020-11-16
    相关资源
    最近更新 更多