url 在 Django 中路由?

url routing in django?

我在 django 中创建 2 到 3 页的网站,所以问题出在 html 部分,当 link 编辑 html 中的页面时,现在有两页(索引“该站点的主页 - 关于) 所以当我 运行 服务器打开索引页面时,当我点击关于 link 时, url 将是 (www.xxxx.com/about/about) 并且当我单击索引 link,url 将是(www.xxxx.com/about)而不是索引页。所以这两个 link 将我引导到关于页面,但 url

这里是主项目中的 url :

urlpatterns = [
    path('',include('pages.urls')),
    path('about/',include('pages.urls')),
    path('admin/', admin.site.urls),
] 

和页面应用中的 urls.py:

urlpatterns = [
    path('',views.index , name='index'),
    path('about/',views.about , name='about'),
]

和页面应用中的 views.py:

def index(reqouest):
    return render(reqouest,'pages/index.html')

def about(reqouest):
    return render(reqouest ,'pages/about.html')

和关于 html 页面:

<section id="bc" class="mt-3">
    <div class="container">
      <nav aria-label="breadcrumb">
        <ol class="breadcrumb">
          <li class="breadcrumb-item">
            <a href="{% url 'index' %}">
              <i class="fas fa-home"></i> Home</a>
          </li>
          <li class="breadcrumb-item active"> About</li>
        </ol>
      </nav>
    </div>
  </section>

p.s 我将 html 页放在 template/pages 文件夹中

从您的主应用 url 中删除 path('about/',include('pages.urls'))

您不应有 2 个包含相同 url 的 url 前缀。当您按名称反转 urls 时,只会使用最后一个包含,因为您基本上定义了相同的名称两次。

当您执行 path('about/', include('pages.urls')) 时,您是在告诉 django 在 pages.urls 中构建所有 about/ 前缀的 url,因此 /about/ 变为"index" url 模式和 /about/about/ "about" url 模式。

第一个 include (path('', include('pages.urls'))) 意味着您正在创建 url 的 //about/,这将起作用,但他们赢了不再命名为 urls,因为您用第二个 include.

覆盖了名称

因此,如果您为 pages.urls 移除第二个 include,您将得到想要的。