【发布时间】:2015-12-17 08:25:11
【问题描述】:
这里是settings.py的相关配置:
import os
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'marcador'
)
STATIC_URL = '/static/'
#STATICFILES_DIR = (
# os.path.join(BASE_DIR, 'static'),
#)
STATIC_ROOT = (os.path.join(BASE_DIR, 'static'))
在项目 urls.py 中;
from django.conf.urls import include, url
from django.contrib import admin
from django.core.urlresolvers import reverse_lazy
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
url(r'^admin/', include(admin.site.urls)),
url(r'^', include('marcador.urls')),
url(r'^login/$', 'django.contrib.auth.views.login',
{'template_name': 'login.html'}, name='mysite_login'),
url(r'^logout/$', 'django.contrib.auth.views.logout',
{'next_page': reverse_lazy('marcador_bookmark_list')},
name='mysite_logout'),
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
在 marcador 应用程序 urls.py 中;
urlpatterns = [
url(r'^user/(?P<username>[-\w]+)/$', 'marcador.views.bookmark_user',
name='marcador_bookmark_user'),
url(r'^$', 'marcador.views.bookmark_list', name='marcador_bookmark_list'),
]
在模板/base.html(提取)中;
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>Marcador - {% block title %}{% endblock %}</title>
<meta name="description" content="">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="apple-touch-icon" href="{% static 'apple-touch-icon.png' %}">
<link rel="stylesheet" href="{% static 'css/bootstrap.min.css' %}">
<style>
body {
padding-top: 50px;
padding-bottom: 20px;
}
</style>
<link rel="stylesheet" href="{% static 'css/bootstrap-theme.min.css' %}">
<link rel="stylesheet" href="{% static 'css/main.css' %}">
<script src="{% static 'js/vendor/modernizr-2.8.3-respond-1.4.2.min.js' %}"></script>
</head>
这是我的目录结构(项目名为marca,应用程序名为marcador);
+-- marca
+-- marcador
| +-- migrations
| +-- templates
| +-- marcador
+-- static
| +-- admin
| | +-- css
| | +-- img
| | | +-- gis
| | +-- js
| | +-- admin
| +-- css
| +-- img
| +-- js
| +-- vendor
+-- templates
这里是变量的打印输出;
Python 2.7.6 (default, Jun 22 2015, 17:58:13)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import settings
>>> print settings.BASE_DIR
/home/fabrice/Documents/Programing/django/marca
>>> print settings.PROJ_DIR
/home/fabrice/Documents/Programing/django/marca/marca
>>> print settings.STATIC_URL
/static/
>>> print settings.STATICFILES_DIR
('/home/fabrice/Documents/Programing/django/marca/marca/static',)
>>> print settings.STATIC_ROOT
/home/fabrice/Documents/Programing/django/marca/static
>>>
页面内容显示正确,但由于服务器返回 404 错误,引导程序未加载;
[20/Sep/2015 16:09:53] "GET / HTTP/1.1" 200 4822
[20/Sep/2015 16:09:54] "GET /static/css/bootstrap.min.css HTTP/1.1" 404 1676
[20/Sep/2015 16:09:54] "GET /static/css/bootstrap-theme.min.css HTTP/1.1" 404 1694
[20/Sep/2015 16:09:54] "GET /static/js/vendor/modernizr-2.8.3-respond-1.4.2.min.js HTTP/1.1" 404 1751
[20/Sep/2015 16:09:54] "GET /static/css/main.css HTTP/1.1" 404 1649
[20/Sep/2015 16:09:54] "GET /static/js/vendor/bootstrap.min.js HTTP/1.1" 404 1691
[20/Sep/2015 16:09:54] "GET /static/js/main.js HTTP/1.1" 404 1643
[20/Sep/2015 16:09:54] "GET /static/js/vendor/bootstrap.min.js HTTP/1.1" 404 1691
[20/Sep/2015 16:09:54] "GET /static/js/main.js HTTP/1.1" 404 1643
我已经阅读了一些关于同一问题的帖子,但是当我打印 BASE_DIR 变量时仍然无法正常工作,我可以看到路径是正确的。
我能让它正常工作的唯一方法是复制引导静态文件;
/usr/local/lib/python2.7/dist-packages/django/contrib/admin/static/css/
我只是不明白它已经花了相当多的时间。
有什么建议吗?
有关信息我正在做这个教程http://django-marcador.keimlink.de/en/
【问题讨论】:
标签: python django django-staticfiles