Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Django Admin not working / ugly - serving with nginx and gunicorn

I have nginx, gunicorn, django running on Ubuntu EC2 instance. The entire site operates fine. Except for the admin. The admin isn't displaying properly. I ran "python manage.py collectstatic" and edited the STATIC_ROOT and STATIC_URL. When I load the admin page, it's ugly, but when I inspect the source, the CSS files are located they should be

<title>Site administration | Django site admin</title> 
<link rel="stylesheet" type="text/css" href="http://staticfiles.mydomain.com/static/admin/css/base.css" />
<link rel="stylesheet" type="text/css" href="http://staticfiles.mydomain.com/static/admin/css/dashboard.css" />

I can look at the nginx access.log and see the files are getting requested and delivered, but the page does not display properly. It's like the files are being received but not processed. Error log is clean.

SOLVED

Under the console tab in Chrome Developer Tools I noticed the following:

Resource interpreted as Script but transferred with MIME type text/plain: "http://staticfiles.<mydomain>.com/static/admin/js/jquery.min.js". 

So the files were getting delivered to browser, but it didn't know what to do with them. To fix it I had to edit the nginx.conf and specify the default type for a couple directories ...

location /static/admin/js/ {
  default_type text/javascript;
  alias /home/ubuntu/webapps/<myproject>/static/admin/js/;
}

location /static/admin/css/ {
  default_type text/css;
  alias /home/ubuntu/webapps/<myproject>/static/admin/css/;  
}

That fixed it; the django admin loads the stylesheets and javascript files and looks and operates normally. I hope this helps someone else.

like image 624
eezis Avatar asked Nov 24 '13 21:11

eezis


People also ask

Is there any video available for Django Nginx Nginx Gunicorn PSQL?

There is only on youtube video available on django nginx gunicorn psql and that too is failing. I wish someone just makes a customized image of all these 5 (django, nginx, gunicorn, supervisor, postgresql) and sell it for one time fee.

How to protect Django admin from unwanted IPS?

NGINX Here’s how you can easily protect Django admin by blocking unwanted IP addresses using NGINX and Gunicorn when behind an AWS Load Balancer. Django Admin The Django Admin appis great.

How to run Django on Gunicorn?

Nowadays Django is becoming more powerful in designing web applications. Running a local server of Django is not a recommended way in production because it’s just a test server not a production ready server. So to run Django in production is to run with Gunicorn and use Nginx as a reverse proxy so it gives more security to our application.

Why is my admin interface not styling in Gunicorn?

Note: The admin interface will not have any of the styling applied since Gunicorn does not know how to find the static CSS content responsible for this. We passed Gunicorn a module by specifying the relative directory path to Django’s wsgi.py file, which is the entry point to our application, using Python’s module syntax.


1 Answers

My Solve ;

1.step

settings.py edit

from django.conf.global_settings import TEMPLATE_CONTEXT_PROCESSORS as TCP
STATIC_ROOT = "/opt/venv/myDjangoProject/static/"
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
'django.contrib.staticfiles.finders.FileSystemFinder',
)
TEMPLATE_CONTEXT_PROCESSORS = TCP + (
'django.core.context_processors.request',
)

2.step

run collesctstatic in terminal :)

python manage.py collectstatic
like image 132
KarBoraN Avatar answered Oct 18 '22 00:10

KarBoraN