Django静态文件404

我不能让我的静态文件来。 我已经尝试了各种设置和目录configuration等,但他们只是成为404s。 我有debug_toolbar安装,所以知道STATIC_URL达到我的请求上下文。

目录结构显示/静态(我也已经把餐目应用程序文件夹内的目录,和用户,只是试试看。

/mealmate /mealmate /meals /static /css /bootstrap.min.css /templates /users 

Settings.py(一些重要的设置,虽然我已经尝试了其他各种):

 MEDIA_ROOT = os.path.join(PROJECT_PATH, 'media/') STATIC_URL = '/static/' INSTALLED_APPS = ( 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.messages', 'django.contrib.staticfiles', ) WSGI_APPLICATION = 'mealmate.wsgi.application' 

在base.html中呈现

  <link rel="stylesheet" href="/static/css/bootstrap.min.css"> 

有任何想法吗? 谢谢

这是在django中用于windows的静态/媒体/模板访问的工作解决scheme,

settings.py

 import os.path STATIC_ROOT = '' STATIC_URL = '/static/' STATICFILES_DIRS = ( os.path.join('static'), ) 

如果您正在Web服务器上运行此项,您是否将静态文件复制到公用的可访问文件夹? 例如:

 # web accessible folder STATIC_ROOT = '/home/your_name/www/mealmate/static/' # URL prefix for static files. STATIC_URL = '/static/' # Additional locations of static files STATICFILES_DIRS = ( # location of your application, should not be public web accessible '/home/your_name/website/mealmate/static', ) # List of finder classes that know how to find static files in # various locations. STATICFILES_FINDERS = ( 'django.contrib.staticfiles.finders.FileSystemFinder', 'django.contrib.staticfiles.finders.AppDirectoriesFinder', ) 

然后,你可以使用这个postDjango静态文件,并使用manage.py将静态文件复制到公共可访问的文件夹

 # --link Create a symbolic link to each file instead of copying. # --noinput Do NOT prompt the user for input of any kind. # python manage.py collectstatic -link --noinput 

希望有所帮助!

对我来说,这原来是由settings.py设置debugging为false造成的。 解决方法是将--insecure开关传递给runserver ,但真正的解决scheme是使用适当的Web服务器来提供静态文件。 请参阅此问题的答案以获取更多详细信息。

我只是添加了相当于

 STATICFILES_DIRS = ( '/absolute_path_to_project/mealmate/static', ) 

得到这个工作。 当然,将absolute_path_to_projectreplace为您的实际path,并在必要时添加驱动器号。

确保膳食是在你的INSTALLED_APPS

我也被困在404的问题,直到我意识到,Apache已经阻止了对静态目录的请求。 我使用python manage.py collectstatic将所有的静态文件复制到我的项目根目录下的静态目录,即/ var / my / site / static 。 同

 Alias /static /var/my/site/static <Directory /var/my/site/static> Require all granted </Directory> 

/etc/httpd/conf/httpd.conf中 ,它现在可以正常工作。

如果以上的答案都不起作用,你可以考虑检查你的服务器configuration。

我假设你在这里使用Django1.3 +。

首先,您需要定义更多的设置:

 STATICFILES_FINDERS = [ 'django.contrib.staticfiles.finders.FileSystemFinder', 'django.contrib.staticfiles.finders.AppDirectoriesFinder', ] STATICFILES_DIRS = [ path.join(TOP_DIR, 'static'), ] STATIC_ROOT = path.join(TOP_DIR, 'staticfiles') STATIC_URL = '/static/' 

这应该可以帮助你find那个目录。

另外,您应该始终使用STATIC URL访问您的静态文件:

 <link rel="stylesheet" href="{{ STATIC_URL }}css/bootstrap.min.css"> 

在Django中,你有更多的好处,你可以链接像这样的静态,也许这是你的问题!

 <script src="{% static 'myapp/bootstrap.min.js' %}"></script> <link href="{% static 'myapp/bootstrap.css' %}" rel="stylesheet" type="text/css"/> 

它更好地使用

{%static'文件名'%}

而且它也更容易了解更多,我参考https://docs.djangoproject.com/en/1.11/intro/tutorial06/