我无法让Django 1.6提供静态文件。
在我的settings.py中,我有:
DEBUG = True
#...
INSTALLED_APPS = (
#...
'django.contrib.staticfiles',
#...
)
STATIC_URL = '/static/'
STATIC_ROOT = '/home/it/static/'
STATIC_DIRS = (
os.path.join(BASE_DIR, '../static'),
)
STATIC_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
)
我还在urls.py中添加了以下内容:
urlpatterns = patterns('',
#...
) + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
有问题的HTML文件包含以下内容:
{% load staticfiles %}
#...
<link rel='stylesheet' type='text/css' href='{% static "css/base.css" %}' />
项目树的相关部分如下所示:
/media/extra/django/
├── it
│ ├── it
│ │ ├── __init__.py
│ │ ├── settings.py
│ │ ├── urls.py
│ │ ├── wsgi.py
│ ├── jobs
│ │ ├── admin.py
│ │ ├── __init__.py
│ │ ├── models.py
│ │ ├── static
│ │ │ └── jobs
│ │ ├── tests.py
│ │ ├── urls.py
│ │ ├── views.py
│ ├── manage.py
├── static
│ ├── css
│ │ ├── base.css
│ │ └── colours.css
│ ├── images
│ │ └── favicon.ico
│ └── scripts
│ └── base.js
└── templates
├── it
│ ├── base.html
│ └── index.html
├── jobs
│ └── index.html
├── site_base.html
我已经尝试将静态目录作为&#39;它的兄弟。目录(并更改STATIC_DIRS变量)。我尝试在urlpatterns上使用+ = staticfiles_urlpatterns()代替。我已经尝试将完整路径添加到STATIC_DIRS。
我也看过这些相关的主题: static files in django 1.6 not found Can't get Django to serve static files Django 1.6.2 will not serve static content
非常感谢
答案 0 :(得分:1)
我不确定您的设置有什么问题,但这是适用于我的设置:
<强> settings.py 强>
STATIC_URL = '/static/'
STATICFILES_DIRS = (
os.path.join(BASE_DIR, '../static'),
)
我还没有定义STATIC_ROOT或STATIC_FINDERS所以它使用默认值。 urls.py中没有任何特殊的静态文件,只有一行用于媒体:
<强> urls.py 强>
urlpatterns = patterns('',
#...
) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
静态标记在模板中工作正常,因此我认为urls.py
中的行不是绝对必需的。
答案 1 :(得分:0)
您不应该通过Web框架提供静态内容,这是Web服务器的工作(例如apache或nginx)
如果您的settings.py文件中有STATIC_URL = '/static/'
,则可以在模板中添加"{{ STATIC_URL }}css/base.css"
,并让网络服务器静态服务/static/
,完全绕过django。
答案 2 :(得分:0)
在你的urls.py中尝试通过更改告诉django标准视图来提供静态文件 urlpatterns
urlpatterns = patterns('',
#...
) + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
With the following:
urlpatterns = patterns('',
#...
)
if settings.DEBUG:
urlpatterns += patterns('',
(r'^static/(?P<path>.*)$', 'django.views.static.serve',
{'document_root':settings.STATIC_ROOT}),)
In the settings.py add:
import os.path
STATIC_ROOT ='only_the_path_to_the_project'
STATICFILES_DIRS = (
os.path.join(os.path.dirname(__file__),'staticcc').replace('\\','/'),
)
答案 3 :(得分:0)
正在开发中
在你的app文件夹中创建文件夹名称&#39; static&#39;并将图片保存在该文件夹中。
使用图片:
<html>
<head>
{% load staticfiles %} <!-- Prepare django to load static files -->
</head>
<body>
<img src={% static "image.jpg" %}>
</body>
</html>
在制作中:
与开发中的一样,只需为Django添加更多参数:
1。添加 settings.py
STATIC_ROOT = os.path.join(BASE_DIR, "static/")
(这将准备文件夹,其中将存储来自所有应用的静态文件)
2。确保您的应用位于INSTALLED_APPS = ['myapp',]
3。在terminall运行命令 python manage.py collectstatic (这将使静态文件从INSTALLED_APPS中包含的所有应用程序复制到全局静态文件夹 - STATIC_ROOT文件夹)
这就是Django需要的所有内容,在此之后你需要进行一些Web服务器端设置来使用静态文件夹。例如。在apache2的配置文件 httpd.conf (对于windows)或 sites-enabled / 000-default.conf。(在linux的站点虚拟主机部分下)添加:
Alias \static "path_to_your_project\static"
<Directory "path_to_your_project\static">
Require all granted
</Directory>
所有