It works perfectly on dev version of my django site. But when I deploy it to production (served by apache), I realized that css is missing for admin pages. Then I digged a little deeper to see what I could do to solve this issue. It actually quite simple. There are two files you need to modify.
- Modify settings.py.
123468910111213141617......# create 'static' folder in your app if you haven't done so,# which will be in the same level of your settings.py file.......INSTALLED_APPS = ('django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.sites','django.contrib.messages','django.contrib.admin',)
here STATIC_ROOT will be the folder where django will copy all admin static files. STATIC_URL will corresponding to the alias name in your apache config file. Don’t worry, keep reading and it will be clear to you.
- Go to your django site directory and run
1python manage.py collectstatic
This will copy all static files including admin css, image, js files into your STATIC_ROOT. Now check your “static” folder, you should see “admin” folder which has “css”, “img” and “js” sub-folders.
- Modify corresponding apache config files under /etc/apache2/sites-available/ folder.
12345689<VirtualHost *:80>......ServerAdmin xxxServerName xxxServerAlias xxx...</VirtualHost>
where “/static/” is your STATIC_URL and “/dir/to/your/static/” will be the location of your “static” folder which is your STATIC_ROOT.
- You are all set! Restart your apache and checkout your admin page.