2014-10-30 43 views
2

我是新的django框架。我创建了简单的欢迎页面,现在我想包括css文件在我的项目中。我不能在项目中应用css文件.i有错误,如“NetworkError:404 NOT FOUND -/static/css/hai.css”如何在django中为css和javascript使用静态文件夹?

my project structure 这是我的项目结构

setting.py

BASE_DIR = os.path.dirname(os.path.dirname(__file__)) 
STATIC_URL = '/static/' 
TEMPLATE_DIRS=(
os.path.join(os.path.dirname(BASE_DIR),"static","templates"), 
) 
if DEBUG: 
    MEDIA_URL='/media/' 
    STATIC_ROOT=os.path.join(os.path.dirname(BASE_DIR),"static","static-only") 
    MEDIA_ROOT=os.path.join(os.path.dirname(BASE_DIR),"static","media") 
    STATICFILE_DIRS=(
    os.path.join(os.path.dirname(BASE_DIR),"static","static"), 
) 

url.py

if settings.DEBUG: 
urlpatterns += static(settings.STATIC_URL,document_root=settings.STATIC_ROOT) 
urlpatterns += static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT) 

base.html文件

<link href="/static/css/bootstrap.min.css" rel="stylesheet"> 

,我试图以下链接,但我不能应用CSS https://www.youtube.com/watch?v=8t80DMAAps8

+1

您最好使用随文档提供的教程来学习,而不是使用随机的YouTube视频。 – Ngenator 2014-10-30 14:58:38

回答

2

我觉得这只是一个拼写错误。你需要把一个SSTATICFILE后,因此它应该看起来像:

STATICFILES_DIRS=(
    os.path.join(os.path.dirname(BASE_DIR),"static","static"), 
) 

希望这会做。

0

试着做一个简单的文件中像这样

BASE_DIR = os.path.dirname(os.path.dirname(__file__)) 
OUTER_DIR = os.path.dirname(BASE_DIR) 

STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder', 
    'django.contrib.staticfiles.finders.AppDirectoriesFinder', 
) 

STATIC_URL = '/static/' 

TEMPLATE_DIRS=(
    os.path.join(OUTER_DIR, "static", "templates"), 
) 

MEDIA_URL='/media/' 
STATIC_ROOT = os.path.join(OUTER_DIR, "static", "static-only") 
MEDIA_ROOT = os.path.join(OUTER_DIR, "static", "media") 

STATICFILE_DIRS=(
    os.path.join(OUTER_DIR, "static"), 
) 

然后,在你的代码中使用{% static %}模板标签。

{% load staticfiles %} 
<link href="{% static 'css/bootstrap.min.css' %}" rel="stylesheet" /> 

测试这一点与

DEBUG = True 
TEMPLATE_DEBUG = DEBUG 

如果关闭DEBUG,那么你需要添加

if not settings.DEBUG: 
    urlpatterns += static(settings.STATIC_URL,document_root=settings.STATIC_ROOT) 
    urlpatterns += static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT) 

不是当它在你现在拥有它。

虽然templates目录不应该在static文件夹中。一般来说,templatesstatic所需的特定文件应该在你的Django项目中不分开。

+0

我按照这些步骤仍然我得到了同样的错误 – karnaf 2014-10-31 05:31:21

2

Django自动收集静态STATIC_ROOT访问STATIC_URL。把你的“基础”静态像引导到您的项目包(项目包是一个与init .py)simpleform > static > bootstrap > copy here all tree dirs from bootstrap package: css, fonts, js dir。并将您的应用程序静态存储在signup > static > also create css, js dirs中。

因此,如果hai.css是你将在你的base.html中使用的基本css之一,把它放到simpleform > static > css > hai.css

settings.py

这是你应该怎么做可用的项目静:

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'simpleform/static'), 
) 

而对于应用静:

STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder', 
    'django.contrib.staticfiles.finders.AppDirectoriesFinder', 
) 

而且你已经设置的目录中的Django应该存储收集的静态信息和上传的媒体(以及访问它们的网址)。例如,这是将其设置为src > staticsrc > media

STATIC_ROOT = os.path.join(BASE_DIR, 'static') 
STATIC_URL = '/static/' 

MEDIA_ROOT = os.path.join(BASE_DIR, 'media') 
MEDIA_URL = '/media/' 

simpleform.urls

if settings.DEBUG: 
    # static files (images, css, javascript, etc.) 
    urlpatterns += patterns(
     '', 
     url(r'^media/(?P<path>.*)$', 'django.views.static.serve', { 
     'document_root': settings.MEDIA_ROOT}), 

     url(r'^static/(?P<path>.*)$', 'django.views.static.serve', { 
     'document_root': settings.STATIC_ROOT}), 
) 

模板

{% load staticfiles %} 

<link href="{% static 'bootstrap/css/bootstrap.min.css' %}" rel="stylesheet" media="screen"> 
<link href="{% static 'css/hai.css' %}" rel="stylesheet" media="screen"> 
+0

感谢q。现在我可以申请CSS可能项目 – karnaf 2014-10-31 05:41:34

相关问题