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
,您将得到想要的。
我在 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
,您将得到想要的。