[GeoNode-users] Template extension over multiple apps

Stefano.LUONI at ext.ec.europa.eu Stefano.LUONI at ext.ec.europa.eu
Tue Nov 14 08:35:34 PST 2017


Hi George,

thank you for your answer. I was following a tutorial and I didn't notice that there was already an empty site_base template under Geonode directories (geonode/geonode/templates/site_base.html). This file is visible by all custom apps, hence it works as a starting point to customize the look of the pages, as you poited out.
My question was different, though: I'd like to extend template across apps, so if we go back to the example directory tree, let's say that I want to extend app1_base.html from app2_base.html.
As far as I know, enabling both APP_DIRS or specific loaders from setting.py should do the job; the problem is that if I try to do that, I cannot extend templates from GeoNode directory anymore because they're not found.

LOCAL_ROOT = os.path.abspath(os.path.dirname(__file__))
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(LOCAL_ROOT, 'templates')],
        'APP_DIRS': True,
        'OPTIONS': {
           'context_processors': [
               "django.contrib.auth.context_processors.auth",
           ],
        }
   },
]

If I edit the DIRS in TEMPLATE settings, explicitly adding the GeoNode template path (../../geonode/geonode/templates), I start getting other errors, like the following:

KeyError : from geonode/geonode/templates/_announcements.html ( {% announcements as site_wide_announcements %} )

Can you help me understanding what I'm doing wrong?

Best regards,
Stefano

________________________________
From: gkpetrak [gkpetrak at gmail.com]
Sent: 14 November 2017 15:49
To: LUONI Stefano (JRC-ISPRA-EXT); geonode-users at lists.osgeo.org
Subject: Re: [GeoNode-users] Template extension over multiple apps


Hello Stefano,


You don't have to name site_base.html or index.html the base templates of your apps. You should name them in a way like: app1_base.html. So your directory tree will look like this:

-virtual_environment
-geonode
    -geonode
        -templates
            -base.html
            -index.html
-custom_project
    -app1
        -templates
            -app1_base.html (extends site_base.html which extends base.html)
            -app1_index.html (if It's required)(extends site_index.html which extends index.html)
    -app2
        -templates
            -app2_base.html (extends site_base.html which extends base.html)
            -app2_index.html  (if It's required) (extends site_index.html which extends index.html)


As GeoNode is composed of many apps see for example the directory structure of "layers" app


site_base.html and index_base.html is the  base template of your GeoNode project in order to customize your site.


Best Regards,

George


On 14/11/2017 02:48 μμ, Stefano.LUONI at ext.ec.europa.eu<mailto:Stefano.LUONI at ext.ec.europa.eu> wrote:
Hi everyone,

I know that it sounds more of a Django related question, but as a non Django expert I'm a bit confused about the ways to extend templates.

The problem
In a development environment, suppose we have created a new app and suppose we call it app1; we can customise the page look by editing site_base.html for global parts, index.html or other specific templates, knowing that site_base will extend base.html from geonode/templates folder, and so on.
What if we create another custom app and we call it app2: how can we define templates that could inherit from what was already defined by app1?

The directory tree looks like this:

-virtual_environment
-geonode
    -geonode
        -templates
            -base.html
            -index.html
-custom_project
    -app1
        -templates
            -site_base.html (extends base.html)
            -site_index.html (extends index.html)
    -app2
        -templates
            -new_template => how to extend site_base.html?

The issue I'm facing is that as soon as I enable context_processors in my settings.py, I get an error because the Geonode base.html template is not found (from extends base.html in geonode/base/templates/geonode_base.html).
I tried using different configurations with loaders like app_namespace or apptemplates with no luck.

Do you have any suggestions for solving this?

Thanks,

Stefano







_______________________________________________
geonode-users mailing list
geonode-users at lists.osgeo.org<mailto:geonode-users at lists.osgeo.org>
https://lists.osgeo.org/mailman/listinfo/geonode-users


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/geonode-users/attachments/20171114/a9ba05f9/attachment-0001.html>


More information about the geonode-users mailing list