Weston Odom
Weston Odom

Reputation: 311

Django tutorial customize admin template

I'm working through the official Django tutorial. At the end of part two they have you customize the admin template just a bit (changing some heading text). I think I've done everything right, but apparently I haven't because the admin site looks exactly the same after running syncdb and restarting the server. My project directory (excluding the virtualenv part) looks like this:

mysite
├── manage.py
├── mysite
│   ├── __init__.py
│   ├── __init__.pyc
│   ├── settings.py
│   ├── settings.pyc
│   ├── urls.py
│   ├── urls.pyc
│   ├── wsgi.py
│   └── wsgi.pyc
├── polls
│   ├── admin.py
│   ├── admin.pyc
│   ├── __init__.py
│   ├── __init__.pyc
│   ├── models.py
│   ├── models.pyc
│   ├── tests.py
│   └── views.py
└── templates
    └── admin
        └── base_site.html

In settings.py I have these lines added to make the project use the template in templates/admin:

import os
PROJECT_PATH = os.path.realpath(os.path.dirname(__file__))

later:

TEMPLATE_DIRS = (os.path.join(PROJECT_PATH, 'templates'),)

I've tried several combinations of slashes and variations on assigning the value to PROJECT_PATH and TEMPLATE_DIRS, but haven't gotten anything to work. Each time I verified that it was actually making a filepath string (with a simple print statement).

To try to see what was going on I edited the original Django base_site.html it its admin folder and that changed my site, so it's obviously still using that. I've read several SO posts, and I don't really know what to do anymore.

Oh, and if it's relevant: Python 2.7.3 and Django 1.4.3

Upvotes: 3

Views: 2957

Answers (1)

Mahdi Yusuf
Mahdi Yusuf

Reputation: 21018

First thing I would try is deleting your *.pyc files they often contain stale information which sometimes can cause issues likes this.

If that isn't the case I would then double check your PROJECT_PATH which I believe is the issue here.

dirname gets you the containing directory. so if that line is in the settings.py it will return /path/to/inner/mysite the one inside the main mysite and since there is not templates directory in your inner mysite it wont work.

what you need to do is this.

PROJECT_PATH = os.path.realpath(os.path.dirname(os.path.dirname(__file__))) 

Which will return you the outer mysite path when combined with templates it will return you the correct path.

Everything should then work.

Upvotes: 4

Related Questions