Wagtail后台添加应用点击报错TemplateDoesNotExist求助
解决Wagtail ModelAdmin点击出现TemplateDoesNotExist错误的方案
嘿,这个问题我之前做Wagtail项目时也碰到过,本质就是ModelAdmin找不到对应的模板文件来渲染页面,咱们一步步来搞定它:
1. 搭建正确的模板目录结构
Wagtail的ModelAdmin会默认去特定路径找模板,你需要在你的应用目录下创建对应的模板文件夹。假设你的应用名叫your_app(记得换成你实际的应用名称),目录结构要这样:
your_app/ templates/ modeladmin/ your_app/ teamroostertwo/ index.html
这里只需要先创建index.html(列表页模板)就行,内容不用自己写,直接继承Wagtail的默认模板即可:
{% extends "modeladmin/index.html" %}
这样就会复用Wagtail ModelAdmin自带的列表页样式和功能了。如果之后需要自定义创建、编辑页面的模板,再在这个目录下添加create.html、edit.html等文件,同样可以继承对应的默认模板。
2. (可选)手动指定模板路径
如果你不想按默认路径放模板,或者想自定义模板位置,可以在你的TeamRoosterModelAdmin类里添加模板属性,比如:
from wagtail.contrib.modeladmin.options import ModelAdmin, modeladmin_register from .models import TeamRoosterTwo class TeamRoosterModelAdmin(ModelAdmin): model = TeamRoosterTwo menu_label = 'Treichle Cup' menu_icon = 'group' menu_order = 200 exclude_from_explorer = True # 指定列表页模板的自定义路径 index_template = "your_app/custom_templates/team_list.html" # 还可以指定创建页、编辑页的模板 # create_template = "your_app/custom_templates/team_create.html" # edit_template = "your_app/custom_templates/team_edit.html"
只要确保你指定的路径下存在对应的模板文件就行。
3. 检查Django的模板加载配置
最后别忘了确认你的Django项目设置里,INSTALLED_APPS已经包含了你的应用,而且TEMPLATES配置中的APP_DIRS是True,这样Django才能自动找到应用下的templates目录。比如settings.py里的相关配置应该是这样:
INSTALLED_APPS = [ # ...其他应用 'your_app', # 你的应用必须在这里 'wagtail.contrib.modeladmin', # ...其他Wagtail相关应用 ] TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [], 'APP_DIRS': True, # 这个要设为True 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', 'wagtail.contrib.settings.context_processors.settings', ], }, }, ]
按上面的步骤操作后,再点击后台侧边栏的"Treichle Cup"选项,应该就能正常加载页面了。
内容的提问来源于stack exchange,提问作者khashashin
相关产品推荐
相关产品推荐

