【发布时间】:2021-06-21 14:00:02
【问题描述】:
这是我第一次使用 Django,所以可能有一个我不知道的明显解决方案。
我的任务是创建一个类似于百科全书的网站,一个目标是为我拥有的每篇文章创建页面。 我在“视图”文件中创建了一个函数:
def title_page(request, title):
if title not in util.list_entries():
return render(request, "encyclopedia/error.html")
return render(request, f"encyclopedia/title.html", {
"page_name": title,
"content": util.get_entry(title)
})
其中util.list_entries() 是提供文章名称列表的函数,util.get_entry 是提供所述文章名称内容的函数。
在我的“urls”文件中,我有一个包含所有路径的 url 模式列表:
urlpatterns = [
path("", views.index, name="index")
]
我尝试创建一个循环来为我拥有的每篇文章附加一个路径:
for entry in util.list_entries():
urlpatterns.append(path(f"<str:{entry}>", views.title_page(entry), name=entry))
但是我得到一个 TypeError:
TypeError: title_page() missing 1 required positional argument: 'title'
我认为title_page 函数需要请求对象,但我不确定如何访问它以及如何通过路径函数传递它,此外在不需要其他位置参数的index 函数等函数中:
def index(request):
return render(request, "encyclopedia/index.html", {
"entries": util.list_entries()
})
网址路径
path("", views.index, name="index")
似乎在没有请求对象作为参数的情况下工作,所以我不明白为什么在第一种情况下它没有。
任何想法都会有很大帮助,在此先感谢您。
【问题讨论】:
标签: python django path request