You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django框架访问store.html报URL不匹配,不修改HTML如何解决?

解决方案

方案1:直接新增匹配store.html的路由规则

无需修改现有前端代码,直接在主项目的urls.py中新增一行路由配置,将store.html的请求直接映射到对应的store视图即可:

# greatkart/urls.py
from django.contrib import admin
from django.urls import path, include
from django.conf import settings
from django.conf.urls.static import static
# 导入对应视图
from . import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', views.home, name='home'),
    # 新增匹配store.html的规则
    path('store.html', views.store, name='store_html'),
    path('store/', include("store.urls"))
] + static(settings.MEDIA_URL, document_root = settings.MEDIA_ROOT)

该方案不会改变浏览器地址栏的显示,用户访问的始终是store.html路径,和现有前端逻辑完全兼容。

方案2:配置重定向规则跳转到标准store路径

如果希望后续地址统一使用/store/的规范路径,避免后续出现重复拼接的问题,可以配置永久重定向规则,将store.html的请求自动跳转至标准的/store/路由:

# greatkart/urls.py
from django.contrib import admin
from django.urls import path, include
from django.views.generic.base import RedirectView
from django.conf import settings
from django.conf.urls.static import static
from . import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', views.home, name='home'),
    # 新增重定向规则,permanent=True表示返回301永久重定向
    path('store.html', RedirectView.as_view(pattern_name='store', permanent=True)),
    path('store/', include("store.urls"))
] + static(settings.MEDIA_URL, document_root = settings.MEDIA_ROOT)

配置后用户点击按钮会自动跳转至/store/路径,地址栏会显示规范路由,即使后续多次点击也不会出现路径重复拼接的问题。


补充说明:之前修改HTML出现重复拼接的原因是使用了相对路径./store,如果当前页面地址已经是/store/的情况下,相对路径会在当前路径后拼接,就会出现/store/store/的错误。如果之后需要修改HTML,推荐使用Django模板的url标签生成绝对路径:<a href="{% url 'store' %}" class="btn btn-outline-primary float-right">See all</a>,可以从根本上避免路径拼接错误。

内容的提问来源于stack exchange,提问作者Marcus Aurelius

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 19:24:00