Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to ignore directories when running Django collectstatic?

I am running a small test project with Django 1.3, Ubuntu 11.10, gunicorn and Nginx, everything in a virtualenv, and now I'm running collectstatic to get my static files into the directory that Nginx serves from.

For simplicity's sake let's say my static directory is something like /home/user/static and my project is at /home/user/project

When I go to /home/user/project I run:

python manage.py collectstatic --noinput

and it correctly copies static files from all the apps I have installed. Unfortunately this also copies the files from Django's admin and I would like to skip that one.

I checked the documentation for collecstatic and there´s an -i (--ignore) parameter that takes a glob-style parameter so I tried different variations of the command, as I´m not sure if the ignore pattern refers to my /home/user/static or to the original app directory.

Here some examples that didn´t work:

python manage.py collectstatic --noinput -i /home/user/static/admin
python manage.py collectstatic --noinput -i /home/user/static/admin/*
python manage.py collectstatic --noinput -i /home/user/static/a*
python manage.py collectstatic --noinput -i /home/alexis/.virtualenvs/django13/*
python manage.py collectstatic --noinput -i /home/user/.virtualenvs/django13/lib/python2.7/site-packages/django/contrib/admin*

I found that if I create a symbolic link from /home/user/static/admin to /home/user/.virtualenvs/django13/lib/python2.7/site-packages/django/contrib/admin/media collectstatic will notice and skip copying those files again but anyway, I´d like to make the --ignore option work as it should.

What am I missing?

Thanks for the help!

like image 606
Alexis Bellido Avatar asked Nov 25 '11 13:11

Alexis Bellido


People also ask

How do I run Collectstatic in django?

Using the collectstatic command, Django looks for all static files in your apps and collects them wherever you told it to, i.e. the STATIC_ROOT . In our case, we are telling Django that when we run python manage.py collectstatic , gather all static files into a folder called staticfiles in our project root directory.

What is Collectstatic -- Noinput?

So django by default overwrites your modified files on collectstatic command, --noinput flag means it will not ask for your permission.

Can django serve static files?

Deployment. django.contrib.staticfiles provides a convenience management command for gathering static files in a single directory so you can serve them easily. This will copy all files from your static folders into the STATIC_ROOT directory. Use a web server of your choice to serve the files.

Where is static folder in django?

Make sure that django. contrib. staticfiles is included in your INSTALLED_APPS . In your templates, use the static template tag to build the URL for the given relative path using the configured STATICFILES_STORAGE .


2 Answers

Don't write full path of directories. For example usage:

python manage.py collectstatic --noinput -i admin

This command won't copy the admin/ directory to STATIC_ROOT path.

like image 164
gokmen Avatar answered Oct 10 '22 07:10

gokmen


The Django 2.2 release has finally addressed the very longstanding issue of specifying ignore parameters with path matching, for example

manage.py collectstatic --ignore /vendor/*.js

should then work.

like image 38
Mark Chackerian Avatar answered Oct 10 '22 06:10

Mark Chackerian