This si my settings.py about static in settings.py:
STATIC_ROOT = '/home/coat/www/site/app/static/'
STATIC_URL = '/static/'
STATICFILES_DIRS = (
"/usr/lib/python2.6/site-packages/django/contrib/admin/static/",
# This is Django admin default static files
)
I user django server:
./manager runserver
Then I open the URL: http://localhost:8000/static/admin/css/base.css
It works very well.
But a open http://localhost/static/admin/css/base.css
It print ‘404’

I had restart Nginx and uwsgi for many times, but it dosen’t works.
First things first, this is nonono:
Never hardcode absolute paths, you’re just making your settings file less portable and probably killing kittens. Adapt this to your needs:
Now, to your question. django.contrib.staticfiles is fantastic but probably a little confusing at first.
You must understand the collectstatic command:
With runserver, staticfiles are served automatically, but in production mode (DEBUG=False, real HTTP server like Nginx), you should run collectstatic to (re)build STATIC_ROOT
STATIC_ROOT: is the root path where the HTTP server should serve static files from.
STATIC_URL: is the root URL where the HTTP server should serve static files to.
STATICFILES_DIRS: other static directories, in addition to each app’s “static” subdirectory. Because django.contrib.admin is a normal app with a “static” folder, there is no need to specify it in the settings.
Conclusion: if STATIC_ROOT resolves to
/home/coat/www/site/app/static/, and STATIC_URL is/static/, then you should:Run collectstatic management command
Configure Nginx to serve
/home/coat/www/site/app/static/on/static/, ie.:Reload nginx