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

Django无法找到leaflet admin widget.html模板的问题求助

Django Admin使用LeafletGeoAdmin时模板找不到的问题

问题场景

我在Django Admin中尝试使用LeafletGeoAdmin,代码如下:

from leaflet.admin import LeafletGeoAdmin

@admin.register(Marker)
class MarkerAdmin(LeafletGeoAdmin):
    list_display = ("name", "location")

添加标记时出现TemplateDoesNotExist错误:

TemplateDoesNotExist at /admin/my_app/marker/add/

Exception Value:  leaflet/admin/widget.html

Django tried loading these templates, in this order:

django.template.loaders.filesystem.Loader: /home/me/my_map/.venv/lib/python3.10/site-packages/django/forms/templates/leaflet/admin/widget.html (Source does not exist)
django.template.loaders.app_directories.Loader: /home/me/my_map/my_map/templates/leaflet/admin/widget.html (Source does not exist)
... etc ...

找到模板实际位置:

/home/me/my_map/.venv/lib/python3.10/site-packages/leaflet/templates/leaflet/admin/widget.html

已尝试在settings.py的TEMPLATES中添加路径,但问题依旧:

TEMPLATES = [
{
    'BACKEND': 'django.template.backends.django.DjangoTemplates',
    'DIRS': [os.path.join(BASE_DIR,'my_app','templates'),
            '/home/me/my_map/.venv/lib/python3.10/site-packages/leaflet/templates/',
            os.path.join(BASE_DIR,'.venv/lib/python3.10/site-packages/leaflet/templates/')
            ],
...

疑问

  1. 为什么django-leaflet无法识别正确的模板路径?
  2. 为什么Django无法找到我指定路径下的模板?

问题1:django-leaflet无法识别正确路径的原因

django-leaflet作为Django第三方应用,正常情况下会通过app_directories.Loader自动加载它的模板——因为它的templates目录符合Django应用的模板结构。出现识别失败的核心原因,大概率是你没把leaflet添加到settings.py的INSTALLED_APPS中。Django只会自动扫描INSTALLED_APPS内应用的templates目录,没添加的话自然找不到对应的模板文件。

问题2:手动添加路径无效的原因

你添加的路径是/.../leaflet/templates/,而模板查找路径是leaflet/admin/widget.html,两者拼接后正好是模板的实际位置,理论上应该能找到。如果还是失败,可能是这几个原因:

  • 路径拼写错误:比如BASE_DIR指向不正确,或者虚拟环境的Python版本号(比如是不是实际用的3.10)写错了
  • 模板加载缓存:Django可能缓存了旧的模板配置,需要重启服务刷新
  • 加载器优先级问题:即使filesystem.Loader在前面,若路径存在拼写误差,还是会匹配失败

正确解决步骤

  1. 核心操作:把leaflet加入INSTALLED_APPS
INSTALLED_APPS = [
    # 其他已有应用...
    'leaflet',
]
  1. 删掉TEMPLATES里手动添加的leaflet模板路径——只要leaflet在INSTALLED_APPS中,Django会自动扫描它的模板目录,不需要手动配置
  2. 重启Django开发服务器,再尝试添加标记

如果问题仍存在,检查django-leaflet安装完整性,可重新安装一次:

pip install --upgrade django-leaflet

内容的提问来源于stack exchange,提问作者Bret Hess

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 18:42:35