17
Django does not serve static files on it’s own. You have to tell it where the files are.
The ADMIN_MEDIA_PREFIX in the settings.py will point Django in the right location.
Since you’re using the development version, you’ll want the dev-specific document for static files how-to. Adam’s link will lead you to the 1.2 version.
101
After setting up your STATIC_ROOT
and STATIC_URL
, you may have to run
python manage.py collectstatic
- [Django]-Why doesn't django's model.save() call full_clean()?
- [Django]-Auto-create primary key used when not defining a primary key type warning in Django
- [Django]-How to debug in Django, the good way?
38
I broke my head over it for two days trying whatnot!
Finally, changed DEBUG
in the settings.py
file to:
DEBUG = True
and it worked.
P.S:
SECURITY WARNING: don't run with debug turned on in production!
- [Django]-What's the best solution for OpenID with Django?
- [Django]-Django migration fails with "__fake__.DoesNotExist: Permission matching query does not exist."
- [Django]-Running a specific test case in Django when your app has a tests directory
30
ADMIN_MEDIA_PREFIX
is deprecated now, use STATIC_URL
instead. Setting STATIC_URL = '/static/'
in settings.py should do the job. Try:
import os.path
import sys
PROJECT_ROOT = os.path.normpath(os.path.dirname(__file__))
and then:
STATIC_ROOT = os.path.join(PROJECT_ROOT, 'static')
STATIC_URL = '/static/'
Works on Django 1.4 pre-alpha SVN-16920.
- [Django]-Checking for empty queryset in Django
- [Django]-How can I use the variables from "views.py" in JavasScript, "<script></script>" in a Django template?
- [Django]-Get list item dynamically in django templates
10
I read several other threads trying to fix this…resorted to an alias as in other threads.
This assumes that your own custom app is serving static files correctly, which would indicate that your STATIC_ROOT
and STATIC_URL
have proper settings.
STATIC_ROOT = ''
STATIC_URL = '/static/'
Then (from your static directory):
ubuntu@ip-1-2-3-4:/srv/www/mysite.com/app_folder/static$ sudo ln -s /usr/local/lib/python2.7/dist-packages/django/contrib/admin/static/admin/ admin
Hope this helps someone…there are a lot of threads on this topic.
- [Django]-Django removing object from ManyToMany relationship
- [Django]-Django Admin Form for Many to many relationship
- [Django]-Paginating the results of a Django forms POST request
9
I ran into this issue as well following the Django Book Tutorial.
In Chapter 5|Installing the model, the book states when referring to the default INSTALLED_APPS-
“Temporarily comment out all six of those strings by putting a hash character (#) in front of them.”
http://www.djangobook.com/en/2.0/chapter05.html
Then, in Chapter 6, the Book tells the reader to uncomment 4 of those 6 lines-
“note that we commented out these four INSTALLED_APPS entries in Chapter 5. Uncomment them now.”
But the statcifiles line is what is needed to restore CSS to the admin page, so uncomment that
‘django.contrib.staticfiles’,
- [Django]-How do I get the object if it exists, or None if it does not exist in Django?
- [Django]-How to access the local Django webserver from outside world
- [Django]-Filter Queryset on empty ImageField
5
In /project_name/project_name/settings.py
you need to set STATIC_URL
to tell your site what url to use for static files.
Then set STATIC_ROOT
to be some folder on your filesystem that is not the same as any of your directories listed in STATICFILES_DIRS
list.
Once STATICFILES_ROOT
is set, you would run python manage.py collectstatic
from the project directory.
This will copy all the admin static files and all files in any other folders listed in the STATICFILES_DIRS
list. Basically this puts all your static files in one place so you you can move them to your CDN when deploying your site. If you are like me and don’t have a CDN, then you have two options:
- Add the folder you set as
STATIC_ROOT
to theSTATICFILES_DIRS
list. This will allow the staticfiles finders in django to locate all the static files. - Move the entire folder of static files somewhere else on your file system and direct
STATICFILES_DIRS
to include that new location.
I make no comments about security with this answer, it is just the way I have been able to develop with my web server for small projects. I expect that you will want a CDN as django suggest if you are doing anything larger scale.
UPDATE:
I just ran into this issue and this method didn’t quite do what I think you want. What ended up working for me was after I ran collectstatic
I just copied the admin static files that it put into STATICFILES_ROOT
into the directory that I had used for my own static files. That solved the issue for me.
- [Django]-How to combine multiple QuerySets in Django?
- [Django]-Can't connect to local MySQL server through socket '/tmp/mysql.sock
- [Django]-Fastest way to get the first object from a queryset in django?
5
I see there are many answers but none of them worked for me, so I’m posting my own.
What solved it for me was adding a static files URL to the root URLs of the app. I needed to add this URL to my URLs list:
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
You will also need these two imports:
from django.conf import settings
from django.conf.urls.static import stati
More can be viewed in this article.
- [Django]-Django Generic Views using decorator login_required
- [Django]-Proper way to handle multiple forms on one page in Django
- [Django]-How do you log server errors on django sites
4
run: python manage.py collectstatic
Add this line to Vhost which located at : /etc/apache2/sites-available/000-default.conf
Alias /static/admin/ /var/www/html/example.com/static/admin
Here is entire Vhost setting for django setup
<VirtualHost *:80>
ServerName gautam.tech
ServerAlias www.gautam.tech
WSGIDaemonProcess gautam.tech python-path=/var/www/html/gautam.tech python-home=/var/www/html/gautam.tech/venv
WSGIProcessGroup gautam.tech
#Your static files location
Alias /static /var/www/html/gautam.tech/static
Alias /media/ /var/www/html/gautam.tech/media
Alias /static/admin/ /var/www/html/gautam.tech/static/admin
<Directory /var/www/html/gautam.tech/static>
Require all granted
</Directory>
<Directory /var/www/html/gautam.tech/media>
Require all granted
</Directory>
WSGIScriptAlias / /var/www/html/gautam.tech/myproject/wsgi.py
DocumentRoot /var/www/html/gautam.tech
<Directory /var/www/html/gautam.tech>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
CustomLog /var/www/html/gautam.tech/access.log combined
ErrorLog /var/www/html/gautam.tech/error.log
</VirtualHost>
This will work for sure!
- [Django]-How to query as GROUP BY in Django?
- [Django]-Is it better to use path() or url() in urls.py for django 2.0?
- [Django]-Django custom field validator vs. clean
- [Django]-Django 1.7 – App 'your_app_name' does not have migrations
- [Django]-Resource temporarily unavailable using uwsgi + nginx
- [Django]-How to mix queryset results?
3
In addition to many of the other answers being useful, I had a problem that hasn’t yet been noted. After upgrading from Django 1.3 to 1.6, my static files directory had a broken symbolic link to the django admin static files.
My settings.py was configured with:
STATICFILES_DIRS = (
'/var/www/static/my-dev',
)
According to this answer,
Django will now expect to find the admin static files under the URL
/admin/.
I had a symbolic link /var/www/static/my-dev/admin
which was set to:
admin -> /usr/local/lib/python2.7/dist-packages/django/contrib/admin/media/
That location no longer exists in django 1.6, so I updated the link to:
admin -> /usr/local/lib/python2.7/dist-packages/django/contrib/admin/static/admin/
And now my admin site is working properly.
- [Django]-Constructing Django filter queries dynamically with args and kwargs
- [Django]-Validators = [MinValueValidator] does not work in Django
- [Django]-Django admin default filter
3
In the issue is in a dev/test/prod server and using Nginx, please follow the below steps.
-
set the configs in settings.py as something below
STATIC_URL = '/static/' BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) STATIC_ROOT = os.path.join(BASE_DIR, 'static')
-
Run the below command to create css and js files in static folder
$ python manage.py collectstatic
-
config in /etc/nginx/sites-enabled/example (Nginx) to serve static files
location /static/ { alias /project/root/folder/static/; }
- [Django]-Python Socket.IO client for sending broadcast messages to TornadIO2 server
- [Django]-You need to install postgresql-server-dev-X.Y for building a server-side extension or libpq-dev for building a client-side application
- [Django]-Django-allauth social account connect to existing account on login
2
If you are using Apache server to host your django site, you need to make sure the static alias point to your /directory to site/site_media/static/. If your static files are in /directory to site/site/site_media/static/, the previous Apache alias configuration will not work.
- [Django]-How to check if ManyToMany field is not empty?
- [Django]-DRF: custom ordering on related serializers
- [Django]-Django delete FileField
2
While following the Django tutorial, I had a similar problem and in my case the issue was the mimetype used by the development server when serving css files.
The mimetype served was ‘application/x-css’ which led to following warning message in Chrome (in the ‘Network’ tab of the Developer tools):
Resource interpreted as Stylesheet but transferred with MIME type
application/x-css: “http://127.0.0.1:8000/static/admin/css/base.css“
The workaround that I’ve found: changing the mimetype to be served by adding following lines to the django webapp’s manage.py file:
import mimetypes
mimetypes.init()
mimetypes.types_map['.css'] = 'text/css'
Note: worked for me with Django 1.7.4 on Python 2.7 and Chrome 40.0
- [Django]-How to reset Django admin password?
- [Django]-How to combine multiple QuerySets in Django?
- [Django]-Paginating the results of a Django forms POST request
2
Same sort of issue i encountered while developing a site in django-1.10.5 and python-2.7.13. But in my firefox-51 and chrome, the login page was able to get the css but still there was no styling. But weirdly it was working on IE-8..
I tried do every possible thing mentioned here and suitable to my set of sw versions. None worked.
But when i tried the same site on other system which had the python-2.7.8, it worked..
Just posted if it may help someone…
edited: later I found that in python-2.7.13, writing the following two lines in settings.py (plus clearing the cache of the browser) had done the trick
import mimetypes
mimetypes.add_type("text/css", ".css", True)
- [Django]-Django error: got multiple values for keyword argument
- [Django]-Django-rest-framework returning 403 response on POST, PUT, DELETE despite AllowAny permissions
- [Django]-Django REST Framework – 405 METHOD NOT ALLOWED using SimpleRouter
2
My issue was resolved by creating new Virtual Environment for the project, before that I was using general system level python interpreter.
$ mkvirtualenv myproject
Reference: https://docs.djangoproject.com/en/2.1/howto/windows/
- [Django]-How can I get the full/absolute URL (with domain) in Django?
- [Django]-Why doesn't django's model.save() call full_clean()?
- [Django]-Django template can't see CSS files
2
this works fine and easily. I moved (manually) the folder. just you have to copy your static/admin
from the directory of the main Project and paste it into public_html static/
if there is no static folder you have to run following command in terminal
python manage.py collectstatic
here you go with css working of Django admin
- [Django]-Django: remove a filter condition from a queryset
- [Django]-How do I do an OR filter in a Django query?
- [Django]-Django Rest Framework File Upload
1
Admin panel was working fine except css wasn’t loaded. This worked for Lightsail Django with Apache
1.Define STATIC_ROOT and STATIC_URL in settings.py
STATIC_ROOT = '/opt/bitnami/projects/decisions/decision/'
STATIC_URL = '/static/'
2.Eject(copy) admin assets files to the project
run python manage.py collectstatic
this command creates /opt/bitnami/projects/decisions/decision/admin
folder with css/
fonts/
img/
js/
subfolders
3.Make /static url accessible from apache
Paste this snippet in /opt/bitnami/apache2/conf/bitnami/bitnami.conf
(If you have set up ssl then the file location will be /opt/bitnami/apache2/conf/bitnami/bitnami-ssl.conf
)
Alias /static/ "/opt/bitnami/projects/decisions/decision/"
<Directory "/opt/bitnami/projects/decisions/decision/">
Order allow,deny
Options Indexes
Allow from all
IndexOptions FancyIndexing
</Directory>
4. Don’t forget to restart apache
sudo /opt/bitnami/ctlscript.sh restart apache
- [Django]-Why won't Django use IPython?
- [Django]-Django: Error: You don't have permission to access that port
- [Django]-Filter Queryset on empty ImageField
1
Check your settings.py file
STATIC_URL = '/static/'
there should be backslash ‘ / ‘ in both opening and closing side ..
- [Django]-Rendering a template variable as HTML
- [Django]-Set up a scheduled job?
- [Django]-Is there a list of Pytz Timezones?
1
I had to copy the files from the site-packages over to static manually.
cp -r lib/python3.10/site-packages/django/contrib/admin/static/admin static
collectstatic not doing this for me. It says 0 files copied.
- [Django]-Trying to migrate in Django 1.9 — strange SQL error "django.db.utils.OperationalError: near ")": syntax error"
- [Django]-CommandError: You must set settings.ALLOWED_HOSTS if DEBUG is False
- [Django]-How to set and get cookies in Django?
0
If you have a value set in settings.py
for STATICFILES_DIRS
and the declared folder doesn’t exist or is in the wrong location, it will cause the Admin to have no styling e.g. by defining:
STATICFILES_DIRS = ( os.path.join(BASE_DIR,"static"))
And the static folder doesn’t exist .
- [Django]-Django migration fails with "__fake__.DoesNotExist: Permission matching query does not exist."
- [Django]-How to mix queryset results?
- [Django]-Data Mining in a Django/Postgres application
0
Failing after trying 1000s of suggestions, I finally found a solution that helped. Here is what I tried and what I was using.
I am using django-1.11 and nginx web server.
Firstly, I made sure that my CSS/js files are not getting 404 in browser’s console. After that, I could see a warning
Resource interpreted as Stylesheet but transferred with mime type text/plain
I found the base.html in admin templates and removed
type="text/css"
and now the lines looks like this:
<link rel="stylesheet" href="{% block stylesheet %}{% static "admin/css/base.css" %}{% endblock %}" />
This fixed the issue for me.
- [Django]-How to get username from Django Rest Framework JWT token
- [Django]-Use Python standard logging in Celery
- [Django]-Trying to migrate in Django 1.9 — strange SQL error "django.db.utils.OperationalError: near ")": syntax error"
0
Configuring static files
Make sure that django.contrib.staticfiles
is included in your INSTALLED_APPS
.
In your settings.py
file, define STATIC_URL
, for example:
STATIC_URL = '/static/'
For more details see
static files
[django-docs]
- [Django]-Django: list all reverse relations of a model
- [Django]-Django REST Framework: adding additional field to ModelSerializer
- [Django]-Django REST Framework : "This field is required." with required=False and unique_together