Django 1.8 和令人困惑的问题 "Static Files"
Django 1.8 and the ever confusing "Static Files"
我启动了一个新的 Django 1.8 项目,但在尝试在开发环境中提供静态文件时遇到了瓶颈。我很确定我已经明确地遵循了文档,但它就是行不通。
Settings.py
STATICFILES_DIR = (
os.path.join(BASE_DIR, 'static/'),
BASE_DIR
)
STATIC_URL = '/static/'
STATIC_ROOT = '/srv/www/cpm2/static/'
urls.py:
from django.conf.urls import include, patterns, url
from django.conf import settings
from django.conf.urls.static import static·
from django.contrib import admin
from django.views.generic import TemplateView
urlpatterns = [
url(r'^admin/', include(admin.site.urls)),
url(r'^test/', TemplateView.as_view(template_name="basics/base.html")),
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
templates/basics/base.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
{% load staticfiles %}
<link href="{% static 'css/bootstrap.css' %}" rel="stylesheet">
</head>
<body>
<h1>Hello, world!</h1>
</body>
</html>
当我去http://my_server_ip:8000/test/
时none的CSS被加载了。查看页面源代码,我看到 CSS link 是 <link href="/static/css/bootstrap.css" rel="stylesheet">
的地方很好,但是当我尝试直接遵循 link 时,它没有给我一个 404错误。
现在,我已经将我的 Apache 服务器设置为直接提供这些文件,它们可以正常工作。所以,转到 http://my_server_ip/static/css/bootstrap.css
有效 - 所以我知道这些文件是可读的。只是他们在开发中不起作用。
我做错了什么?和我之前的许多人一样,我正在拔头发!
EDIT 尝试直接访问文件给我这个:
Page not found (404)
Request Method: GET
Request URL: http://my_server_ip:8000/static/css/bootstrap.css
Raised by: django.views.static.serve
'css/bootstrap.css' could not be found
You're seeing this error because you have DEBUG = True in your Django settings file. Change that to False, and Django will display a standard 404 page.
它甚至不显示其尝试过的位置列表,只是找不到文件。
您缺少来自 STATICFILES_DIRS
的 's'。
此外,您不应在该设置中包含您的 BASE_DIR
- 这可能最终会为您的所有 python 代码提供服务,这不是一个好主意。
我启动了一个新的 Django 1.8 项目,但在尝试在开发环境中提供静态文件时遇到了瓶颈。我很确定我已经明确地遵循了文档,但它就是行不通。
Settings.py
STATICFILES_DIR = (
os.path.join(BASE_DIR, 'static/'),
BASE_DIR
)
STATIC_URL = '/static/'
STATIC_ROOT = '/srv/www/cpm2/static/'
urls.py:
from django.conf.urls import include, patterns, url
from django.conf import settings
from django.conf.urls.static import static·
from django.contrib import admin
from django.views.generic import TemplateView
urlpatterns = [
url(r'^admin/', include(admin.site.urls)),
url(r'^test/', TemplateView.as_view(template_name="basics/base.html")),
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
templates/basics/base.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
{% load staticfiles %}
<link href="{% static 'css/bootstrap.css' %}" rel="stylesheet">
</head>
<body>
<h1>Hello, world!</h1>
</body>
</html>
当我去http://my_server_ip:8000/test/
时none的CSS被加载了。查看页面源代码,我看到 CSS link 是 <link href="/static/css/bootstrap.css" rel="stylesheet">
的地方很好,但是当我尝试直接遵循 link 时,它没有给我一个 404错误。
现在,我已经将我的 Apache 服务器设置为直接提供这些文件,它们可以正常工作。所以,转到 http://my_server_ip/static/css/bootstrap.css
有效 - 所以我知道这些文件是可读的。只是他们在开发中不起作用。
我做错了什么?和我之前的许多人一样,我正在拔头发!
EDIT 尝试直接访问文件给我这个:
Page not found (404)
Request Method: GET
Request URL: http://my_server_ip:8000/static/css/bootstrap.css
Raised by: django.views.static.serve
'css/bootstrap.css' could not be found
You're seeing this error because you have DEBUG = True in your Django settings file. Change that to False, and Django will display a standard 404 page.
它甚至不显示其尝试过的位置列表,只是找不到文件。
您缺少来自 STATICFILES_DIRS
的 's'。
此外,您不应在该设置中包含您的 BASE_DIR
- 这可能最终会为您的所有 python 代码提供服务,这不是一个好主意。