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

Django Template Tag `url` 无法正常工作,请求排查解决

解决Django中NoReverseMatch: 'crudeoilsale-list'未找到的问题

从你描述的情况来看——路由列表只显示了^admin/和office/ ^$,但你定义的sales/crudeoilsale/路由没出现在里面,核心问题几乎可以确定是:你的sales模块路由没有被正确挂载到项目的主路由配置里,导致Django根本找不到crudeoilsale-list这个命名路由。

下面是一步步的解决方法:

1. 确保sales应用有独立的urls.py并被主路由引入

首先,先检查你的sales应用目录下是否有urls.py文件,如果没有就新建一个,把你的路由代码放进去:

# sales/urls.py
from django.urls import path, url
from .views import LVCla

urlpatterns = [
    url(r'^crudeoilsale/$', LVCla.as_view(), name='crudeoilsale-list'),
]

然后打开项目根目录的urls.py(也就是主路由文件),添加一行代码把sales的路由包含进来:

# 项目根目录/urls.py
from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('office/', include('office.urls')),  # 你已有的office路由
    path('sales/', include('sales.urls')),  # 新增这行,挂载sales的路由
]

小贴士:如果你的Django版本是3.1及以上,推荐用path代替url(url是re_path的别名,用于正则匹配),你的路由可以改成path('crudeoilsale/', LVCla.as_view(), name='crudeoilsale-list'),效果完全一样,写法更简洁。

2. 核对路由命名与模板引用的一致性

虽然你模板里的{% url 'crudeoilsale-list' %}写法没问题,但还是要再确认两点:

  • 视图LVCla在sales应用的views.py中确实存在,拼写完全正确
  • 路由的name参数确实是'crudeoilsale-list',大小写和模板里的完全匹配(Django的路由名称是区分大小写的)

3. 重启服务并验证路由

修改路由后,开发服务器可能不会自动刷新配置,建议:

  • 关闭当前运行的python manage.py runserver进程
  • 重新启动开发服务器
  • 如果你想直观看到所有已注册的路由,可以安装django-extensions:
    pip install django-extensions
    
    然后把django_extensions加到项目settings.py的INSTALLED_APPS里,再运行:
    python manage.py show_urls
    
    查看输出列表里是否包含/sales/crudeoilsale/对应的crudeoilsale-list命名路由。

内容的提问来源于stack exchange,提问作者Lorenzo Ang

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:13:11