Why can't I get my static dir to work with django 1.3?

时光总嘲笑我的痴心妄想 提交于 2019-12-03 00:32:53

If you are using the built-in development webserver (i.e. run it with manage.py runserver), Django will take care of static files while in development.

Please note that STATIC_ROOT is the path where Django collects static files in, rather than the path that it serves files from. You should not maintain STATIC_ROOT yourself! You can read more on that in the Django documentation.

In general, you don't need to add django.views.static.serve to your urls, with the built-in server.

The static files should be placed elsewhere, besides STATIC_ROOT. You can place them either in the myapp/static path (i.e. under the individual app static file). You can also dedicate static folder for the entire project (e.g. /path/to/project/proj_settings) and update STATICFILES_DIRS in settings.py to be:

STATICFILES_DIRS = (
    # Put strings here, like "/home/html/static" or "C:/www/django/static".
    # Always use forward slashes, even on Windows.
    # Don't forget to use absolute paths, not relative paths.
    os.path.join(PROJECT_DIR, 'proj_static'),
)

Then you can place your css/main.css file in /proj_static/css/main.css. Django built-in webserver will server /static/ from there.

While in production, you should collect all the static files in STATIC_ROOT, by running manage.py collectstatic. Then you can serve that folder directly through your webserver (e.g. nginx, Apache), rather than through Django.

You should set up STATIC_URL in settings.py

In your case it have to be

STATIC_URL = '/static/'

mainly two step:

  1. check STATIC_ROOT path:

    Does the file exist? /home/user/www/site/static/css/main.css if not, you shoud run "python manage.py collectstatic" to copy static file to STATIC_ROOT path if "collectstatic" can't copy css files to STATIC_ROOT path, then shoud check source css path in "STATICFILES_DIRS"
  2. in develope env, (use runserver to start web server), make sure:

    a) settings.py: INSTALLED_APPS include: 'django.contrib.staticfiles' b) urls.py: urlpatterns += staticfiles_urlpatterns()

I guess you not config step 2.b . your method should ok, but it is hardcoded,

url(r'^static/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.STATIC_ROOT } ),

In django's document it already be mentioned:

from django.contrib.staticfiles.urls import staticfiles_urlpatterns
urlpatterns += staticfiles_urlpatterns()
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!