2016-01-08 51 views
0

项目结构:包括静态文件从模板Django的

├── db.sqlite3 
├── manage.py 
├── static 
│   └── admin 
│    ├── css 
│    ├── img 
│    └── js 
├── abc1 
│   ├── admin.py 
│   ├── __init__.py 
│   ├── migrations 
│   │   ├── __init__.py 
│   ├── models.py 
│   ├── templates 
│   │   └── abc1 
│   │    ├── homepage.html 
│   │    ├── css 
│   │    ├── img 
│   │    ├── js 
│   ├── tests.py 
│   ├── urls.py 
│   ├── views.py 
└── abc2 
    ├── functions.py 
    ├── __init__.py 
    ├── settings.py 
    ├── urls.py 
    ├── views.py 
    ├── wsgi.py 

Settings.py文件:

MEDIA_URL = '/media/' 
STATIC_URL = '/static/' 
PROJECT_DIR = os.path.dirname(__file__) 
SETTINGS_PATH = os.path.dirname(os.path.dirname(__file__)) 

# Static files (CSS, JavaScript, Images) 
STATIC_ROOT = '' 
STATICFILES_DIRS = (
    os.path.join(PROJECT_DIR, '../static'), 
    os.path.join(PROJECT_DIR, '../templates/abc1/img'), 
) 

homepage.html:

<head> 
    {% load staticfiles %} 

    <link href="{% static 'css/bootstrap.css' %}" rel="stylesheet"> 
    <link href="{% static 'css/theme.css' %}" rel="stylesheet"> 
    <link href="{% static 'css/magnific-popup.css' %}" rel="stylesheet"> 
</head> 
<body> 
    <script src="js/bootstrap.min.js"></script> 
    <script src="js/cbpAnimatedHeader.min.js"></script> 
    <script src="js/owl.carousel.min.js"></script> 
</body> 

错误日志:

[08/Jan/2016 17:16:42] "GET /static/css/theme.css HTTP/1.1" 404 1643 
[08/Jan/2016 17:16:42] "GET /static/css/bootstrap.css HTTP/1.1" 404 1655 
[08/Jan/2016 17:16:42] "GET /static/css/magnific-popup.css HTTP/1.1" 404 1670 

[08/Jan/2016 17:16:42] "GET /abc1/js/owl.carousel.min.js HTTP/1.1" 404 3579 
[08/Jan/2016 17:16:42] "GET /abc1/js/bootstrap.min.js HTTP/1.1" 404 3570 
[08/Jan/2016 17:16:42] "GET /abc1/js/cbpAnimatedHeader.min.js HTTP/1.1" 404 3594 

我想在Django中包含静态的css/js/img文件。 有人可以指出我的错误吗? (想不出确切的问题/原因,所以,不得不提很多细节)

感谢,

回答

5

项目的主文件夹中创建一个目录static,至极包含manage.py并把所有静态在这个文件夹中。对于cssjsimg创建文件夹,并像以前那样加载:

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

使用此设置:

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 
STATIC_URL = '/static/' 
STATICFILES_DIRS = (os.path.join(BASE_DIR, 'static'),) 

而且你不需要这个点路径之前../static

+0

静已经是在项目的主文件夹中。如何在静态内添加manage.py?当我尝试'python manage.py collectstatic'时,abc1中的大部分css/js/Img文件都不包含在'static'目录中。所以,我不知道如何为'abc1'目录生成静态。你能详细说一下吗? – Naveen

+0

你不需要“收集静态”来进行静态工作。我看到你有一个名为'admin'的目录,所以你需要像这样加载它:{%static'admin/css/bootstrap.min.css'%}'同时从这里删除所有的静态'os.path.join(PROJECT_DIR ,'../ templates/abc1/img'),并把它放在主静态目录 –

+0

no no。你不了解我,你不需要在静态文件夹中移动'manage.py'。当我说“所有静态”时,我的意思是只有你的静态,至于你在项目中添加的内容,比如“bootstrap”,Django也使用其他路径,对于本机Django静态,这没问题。所以你有主文件夹,其中包含'dbsqlite','abs1'和'abs2'应用程序,在这里你有'静态'文件夹,这是不加载,因为你有其他文件夹,'静态'名称'管理员',所以或者删除这个文件夹并在静态文件夹中创建'js','css','img',或者添加路径'{%static'admin/css/bootstrap.min.css'%}'就像我说的那样 –