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_project
replace为您的实际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/