Python 奥尔德林你好世界问题
我正在自学如何使用Aldryn来主持django cms网站。我一直在浏览网站上的应用程序开发教程,几乎一直到最后。当我运行Python 奥尔德林你好世界问题,python,django,django-cms,divio,Python,Django,Django Cms,Divio,我正在自学如何使用Aldryn来主持django cms网站。我一直在浏览网站上的应用程序开发教程,几乎一直到最后。当我运行aldryn project up时,我得到一个错误,告诉我检查日志。我使用docker compose logs web检查日志,在日志的末尾我看到:django.core.exceptions.impropertlyconfigured:CMS插件必须定义一个存在的呈现模板():hello\u world\u ct/hello.html 由于某些原因,aldryn项目似
aldryn project up
时,我得到一个错误,告诉我检查日志。我使用docker compose logs web检查日志,在日志的末尾我看到:django.core.exceptions.impropertlyconfigured:CMS插件必须定义一个存在的呈现模板():hello\u world\u ct/hello.html
由于某些原因,aldryn项目似乎无法识别我在类HelloWorld(CMSPluginBase):
中定义了渲染模板的面。当我注释掉render_模板时,日志会给出相同的错误
我完全按照教程的要求设置了项目。addons dev文件夹中的目录树如下所示:
hello-world-ct/
├── addon.json
├── hello_world_ct
│ ├── admin.py
│ ├── cms_plugins.py
│ ├── cms_plugins.pyc
│ ├── __init__.py
│ ├── __init__.pyc
│ ├── migrations
│ │ └── __init__.py
│ ├── models.py
│ ├── models.pyc
│ ├── templates
│ │ └── hello_world_ct
│ │ └── hello.html
│ ├── tests.py
│ └── views.py
├── LICENSE
├── MANIFEST.in
├── README.rst
└── setup.py
cms_plugins.py文件如下所示:
from cms.plugin_base import CMSPluginBase
from cms.plugin_pool import plugin_pool
from cms.models.pluginmodel import CMSPlugin
class HelloWorld(CMSPluginBase):
model = CMSPlugin
render_template = "hello_world_ct/hello.html"
text_enabled = True
plugin_pool.register_plugin(HelloWorld)
。。。在我看来这是对的,但也许我遗漏了什么。我也有同样的问题。这是对我有效的解决方案 在
settings.py
文件中,将应用程序的模板文件夹添加到TEMPLATES
变量:
模板=[
{
'BACKEND':'django.template.backends.django.DjangoTemplates',
“DIRS”:[
join(BASE\u DIR、'your\u core\u app'、'core\u app\u templates\u folder'),
join(BASE\u DIR、'hello\u world\u ct、'templates'),
],
“选项”:{
...
},
},
]
并将模板名称添加到CMS\u TEMPLATES
变量:
CMS\u模板=(
('fullwidth.html','fullwidth'),
...
('hello.html'、'hello World CT'),
值得仔细检查,只是为了确定,您的路径和对路径的引用确实都包含下划线,而不是破折号(hello\u world\u ct
)。要进行调试,您可以尝试手动通过django获取模板,以查看这是模板加载的一般问题还是插件中的特定问题。首先注释掉插件池。注册插件(HelloWorld)
在cms\u plugins.py
中,这样django就可以启动了。使用docker compose run--rm web python manage.py shell
跳入django shell。然后从django.template导入loader;loader.get\u模板(“hello\u world\u ct/hello.html”)。也可以尝试loader.get\u模板(“base.html”)
(您知道的一些模板可以工作)作为测试的参考。