Kin*_*Guy 60 django static http-status-code-404
我无法得到我的静态文件.我尝试了各种设置和目录配置等等,但它们只是变成404s.我安装了debug_toolbar,因此知道STATIC_URL正在到达我的请求上下文.
目录结构显示/静态(我还将目录放在饭菜app文件夹和用户内部,只是为了试一试.
/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">
有任何想法吗?谢谢
Ama*_*the 104
这是django for windows中静态/媒体/模板访问的工作解决方案,
settings.py
import os.path
STATIC_ROOT = ''
STATIC_URL = '/static/'
STATICFILES_DIRS = ( os.path.join('static'), )
Art*_*cca 29
对我来说,结果是将调试设置为false settings.py.解决方法是将--insecure交换机传递给runserver,但真正的解决方案是使用适当的Web服务器来提供静态文件.有关详细信息,请参阅此问题的答案.
eod*_*och 21
如果您在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',
)
然后,您可以使用此文章Django静态文件,并使用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
希望有所帮助!
joh*_*ope 11
从上面的评论 - 运行这个
python manage.py findstatic --verbosity 2 css/styles.css
找不到与“css/styles.css”匹配的文件。
查看以下位置:
/Users/yourname/Documents/Workspace/test/staticfiles
我只是改名为我的静态文件夹staticfiles,一切都很好。(我在 osx + django 1.x 上)
如果您在本地开发设备上,使用不安全模式可能不会受到伤害 - 否则您可能仍会收到 404 错误。
python manage.py runserver --insecure
更新
实际上挖掘 settings.py 发现了侵权行。
STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'staticfiles'),
)
如果您最近在设置文件中将调试更改为 false。遵循此程序。
大多数情况下是由于settings.py 中的调试设置为false 导致的。如果您将 --insecure 开关传递给 runserver,它应该可以工作。因此,如果您确实python manage.py runserver 0.0.0.0:8000将其更改为python manage.py runserver 0.0.0.0:8000 --insecure。
它应该工作。
小智 7
如果您遇到此错误,请首先检查调试是否正确,以及您是否同时使用“STATIC_ROOT”和“STATICFILES_DIRS”
对于我的情况,我在 settings.py 中使用了以下内容:
import os #(You have to import os at first)
    
#(If the app is in production mode then False. By default True)
DEBUG = False 
#(If debug is false then add allowed hosts)
ALLOWED_HOSTS = ['*'] 
#(Built in)
STATIC_URL = '/static/' 
STATIC_ROOT = 'static' (You have to add it to the code)
STATICFILES_DIRS = [ os.path.join(BASE_DIR, '/static') ] (You have to add it to the code)
我只是添加了相当于
STATICFILES_DIRS = (
    '/absolute_path_to_project/mealmate/static',
)
让这个工作.当然,请替换absolute_path_to_project为您的实际路径,并在必要时添加驱动器号.
我假设您在这里使用的是 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/'
这应该可以帮助您找到该目录。
此外,您应该始终使用STATIC URL以下方式访问您的静态文件:
<link rel="stylesheet" href="{{ STATIC_URL }}css/bootstrap.min.css">
小智 5
我也陷入了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中,它现在正常工作.
如果上述答案都不起作用,您可以考虑检查服务器配置.
添加下面的setting.py
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static'),
]