Django Noob URL 从根页面到子页面

Django Noob URL to from Root Page to sub Page

我有一个 Django 项目,我想在其中为所有站点网页使用一个应用程序。我的项目如下所示:

project
  src
    project
      urls.py
      views.py
      ...
    web
      migrations #package
      urls.py
      views.py
      ...
      templates
        web
          index.html # I want this to be my root page
          page2.html # This is the second page I'm trying to link to

我正在尝试在 index.html 中创建一个 link,它将带我去 page2.html。这就是我正在做的

project->urls.py 我有 url(r'^$', include('web.urls', namespace="web")),。这应该将所有转到 url http://127.0.0.1:8000/ 的页面请求定向到页面 index.html

project->views.py 是空的,因为我希望 web 应用程序提供所有网页。

web->urls.py 中我有 url(r'^$', views.index, name='home_page')web->views.py 和函数

相关
def index(request):
   print("Main index Page")
   return render(request, 'web/index.html', {})

哪个 returns 正确的页面。

在我为 page2.html 添加 link 到 index.html 之前,这一切正常。 link 看起来像这样:{% url 'web:page2' %}。我更新 web->urls.py。我将以下功能添加到 web->views.py:

def page2(request):
   print("Page2")
   return render(request, 'web/page2.html', {})

现在我明白了

Reverse for 'page2' with arguments '()' and keyword arguments '{}' not found. 1 pattern(s) tried: ['$page2/?$']

突出显示“{% url 'web:page2' %}”行。

当我删除 link 时一切正常。我的 logic/setup 怎么了?

您需要添加一个额外的 URL 模式:

urls = [
    url(r'^page2/$', views.page2, name='page2'),
    url(r'^$', views.index, name='home_page'),
]

或者,传递一个参数,您可以使用该参数来标识要呈现给视图的页面。当前,当 URL 与 page2 匹配时,您没有将 URL 映射到要调用的函数,只是主页。