html - django中的url路由?
问题描述
我在 django 中从 2 到 3 页创建网站,所以问题出在 html 部分,当在 html 中链接页面时,现在有两个页面(索引“站点的主主页 - 关于)所以当我运行服务器时打开索引页面,当我点击关于链接时,网址将是(www.xxxx.com/about/about),当我点击索引链接时,网址将是(www.xxxx.com/about)而不是索引page . 所以这两个链接将我引导到 about 页面,但 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'),
]
和 pages 应用程序中的 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>
ps 我把html页面放在模板/页面文件夹中
解决方案
path('about/',include('pages.urls'))
从您的主要应用网址中删除。
您不应该有 2 个包含相同 url 的 url 前缀。当您按名称反转 url 时,只会使用最后一个包含,因为您基本上定义了两次相同的名称。
当你这样做时path('about/', include('pages.urls'))
,你是在告诉 django 构建以pages.urls
为前缀的所有 url about/
,因此/about/
变成“index”url 模式和/about/about/
“about”url 模式。
第一个include
( path('', include('pages.urls'))
) 表示您正在创建 url/
和/about/
,这将起作用,但它们将不再被命名为 url,因为您用第二个 覆盖名称include
。
因此,如果您删除include
pages.urls 的第二个,您将得到您想要的。
推荐阅读
- google-apps-script - 有没有办法通过应用程序脚本在谷歌表格的表格上找到现有的过滤器?
- powershell - 在 DevOps 管道中设置 Azure KeyVault 变量
- php - Symfony 5.2.11:创建自定义访问决策管理器的问题
- node.js - 谷歌聊天机器人请求消息文本
- python - Python 四位密码查找器
- r - (R) 错误:未使用的参数(禁止 = 表达式(x2 > x1))
- php - 如何使用 PHP 开发工具包创建具有对 S3 的完全访问权限的编程访问权限的 IAM 用户
- javascript - 我在使用 Javascript 和 PHP 将函数分配给 SweetAlert 时出错
- email - MsGraph WebAPI 访问共享邮箱
- urlencode - Rest Sharp 转义 %5F 字符