django - Server error loading static files

2019-02-26 06:41发布

问题:

So im building my own django site. Right now im stuck with loading the statics. im getting the following error in the console:

 GET http://localhost:8000/static/css/style.css 500 (Internal Server Error)

Im trying to load a css file using the static taggs:

{{ STATIC_URL }}

in my settings i've edited the following:

PROJECT_ROOT = os.path.abspath(os.path.dirname(__file__))

STATIC_ROOT = os.environ.get('STATIC_ROOT',os.path.join(PROJECT_ROOT,"static",))
STATIC_URL = '/static/'


STATICFILES_DIRS = (
os.path.join(PROJECT_ROOT, "static",),
)

also added the TEMPLATE_CONTEXT_PROCESSORS:

TEMPLATE_CONTEXT_PROCESSORS = (
'django.core.context_processors.debug',
'django.core.context_processors.i18n',
'django.core.context_processors.media',
'django.core.context_processors.static',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
)

added the following to urls.py so i can navigate to localhost:8000/static/

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

I'm not sute what im doing wrong. The PROJECT_ROOT is directing to the root of the project. I'm also using that for my TEMPLATE_DIR, and that works fine.

Hopefully someone can enlighten me! I've been googling around, and looked at other questions, but as far as i can see, i did everything how i'm supposed to!

Thx in advance!!

回答1:

Change the your debug into DEBUG=False


回答2:

You have STATIC_ROOT in STATICFILES_DIRS ! That's incorrect.

Not sure if your issue is related to that, but it definitively show a lack of understanding of django staticfiles management.

Maybe after reading this article you'll understand it fully and be able to set it up right.

And you don't need this with DEBUG=True:

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


回答3:

Well, I had the same problem, and then I saw this error message:

"Your STATICFILES_DIRS setting is not a tuple or list; " django.core.exceptions.ImproperlyConfigured: Your STATICFILES_DIRS setting is not a tuple or list; perhaps you forgot a trailing comma?"

So, I converted the result of

(os.path.join(BASE_DIR, 'static'))

To a list:

STATICFILES_DIRS = [(os.path.join(BASE_DIR, 'static'))]

Hope this help somebody.