I used turbogears 2.3.10 with kajiki template, I created applicantion name samples and created pluggable application name plugapp. (I see in http://turbogears.readthedocs.io/en/latest/turbogears/Pluggable/index.html?highlight=plugin)
I created package name master_view(templates/master_view) and file master.xhtml in plugapp(pluggable application).
-plugapp
--templates
--master_view
--master.xhtml
--index.xhtml
In index.xhtml of plugapp(pluggable application), I changed
<py:extends href="master.xhtml"/>
to
<py:extends href="master_view/master.xhtml"/>
I run http://localhost:8080/plugapp. it show error
TypeError: coercing to Unicode: need string or buffer, NoneType found .
How do I fix it? thank you.
The error can definitively be better, but what's trying to tell you is that there is no such template as when specified by a relative filename, the templates are looked up inside the templates directory. Which is the templates directory of the base application (as the base app configuration applies), not the template directory of the pluggable.
As the application where you are plugging the module into has no
templates/master_view/master.xhtml
file kajiki is unable to load it.Whenever referring to something contained into a pluggable app, you should use the dotted notation. So that you can refer to the python package of the pluggable app.
In this case you want to create an
__init__.py
file inside yourmaster_view
directory and usepy:extends="provaplug.templates.master_view.master"
to load the expected master.html file.As you are explicitly pointing to
master_view/master.xhtml
contained into theprovaplug
package (whereprovaplug
is the name of your pluggable app) you will be loading the one of your pluggable app