我不能让我的静态文件上来。我已经试过各种设置和目录结构等,但他们只是调高为404。我已经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的工作方案,
settings.朋友
import os.path
STATIC_ROOT = ''
STATIC_URL = '/static/'
STATICFILES_DIRS = ( os.path.join('static'), )
我想你错过了把应用INSTALLED_APPS在你的settings.py文件,你应该添加“mealmate”
INSTALLED_APPS = (
'mealmate',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
)
之后,静态和命令文件将是可见的Django的。我是有命令的麻烦,这是我固定的方式。
就我而言,我所要做的就是重新运行服务器:
python manage.py runserver
对我来说,这竟然是由settings.py
调试设置为false所致。一种解决方法是将--insecure
开关传递给runserver
,但真正的解决方案是使用适当的Web服务器提供静态文件。查看答案this question了解更多详情。
如果您在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 static Files和静态文件复制到公共访问的文件夹使用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
希望帮助!
我简单地添加相当于
STATICFILES_DIRS = (
'/absolute_path_to_project/mealmate/static',
)
得到这个工作。当然,你的实际路径替换absolute_path_to_project
,如有必要,添加驱动器号。
我还停留在404问题,直到我意识到,阿帕奇封锁了该请求的静态目录。我用python manage.py collectstatic
所有静态文件的静态目录下复制我的项目的根,也就是在/ var /我的/网站/静态的。同
Alias /static /var/my/site/static
<Directory /var/my/site/static>
Require all granted
</Directory>
在/etc/httpd/conf/httpd.conf中,它现在正常工作。
如果上述问题的答案的作品,你可以考虑检查您的服务器配置。
确保mealmate是在你的INSTALLED_APPS
从上述评论 - 运行此
python manage.py findstatic --verbosity 2 css/styles.css
没有匹配的文件发现“CSS / Styles.css中”。
展望在以下位置: /用户/提供yourname /文档/工作区/测试/ staticfiles
我只是改名为我的静态文件夹staticfiles,一切都很好。 (我在OSX + Django的1.x中)
使用不安全的模式,如果你是在本地开发框可能不会伤害 - 否则,你仍然可以得到404错误。
python manage.py runserver --insecure
UPDATE
实际上挖掘到settings.py发现侵权线。
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'staticfiles'),
)
我假设你正在使用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">
在Django你有你的模板一个好处,它是你可以喜欢这个链接静,也许这是你的问题!
<script src="{% static 'myapp/bootstrap.min.js' %}"></script>
<link href="{% static 'myapp/bootstrap.css' %}" rel="stylesheet" type="text/css"/>
它能够更好地使用
{%静态 '文件名' %}
其也更容易更多地了解,我指的是https://docs.djangoproject.com/en/1.11/intro/tutorial06/