Django站点点击Blog链接重复跳转至blog/blog报错,如何解决?
解决Django中重复拼接URL路径的问题
你遇到的问题是相对URL路径导致的:
当模板里的链接写的是href="blog"这类相对路径时,第一次从根页面(localhost/)点击会正确跳转到localhost/blog;但当你处于localhost/blog页面时,浏览器会把相对路径拼接到当前路径后,就出现了localhost/blog/blog的错误地址。
下面是几种解决方法:
直接使用绝对路径
把模板中的链接从href="blog"修改为href="/blog",强制从网站根目录开始跳转,无论当前页面在哪,点击后都会指向localhost/blog。使用Django的
url模板标签(推荐)
这是Django官方推荐的URL管理方式,能避免硬编码路径带来的维护问题:- 先在项目或应用的
urls.py中给blog的URL配置name参数:# urls.py from django.urls import path from . import views urlpatterns = [ path('blog/', views.blog_view, name='blog'), # 其他URL配置... ] - 在模板中用
{% url 'blog' %}生成正确的URL:<a href="{% url 'blog' %}">Blog</a>
后续如果需要修改blog的URL路径(比如改成
articles/),只需要修改urls.py里的path内容,所有模板中的链接会自动同步更新,无需逐个修改。- 先在项目或应用的
统一导航栏的路径处理
如果是网站全局导航栏出现这个问题,确保所有导航链接都使用上述两种方式之一,彻底避免相对路径的使用。
内容的提问来源于stack exchange,提问作者Zulyumni Fadli
相关产品推荐
相关产品推荐

