这两天被django折磨的快崩溃了。。。要做一个网页,结果CSS 和图片总是加载不出来。。。。官方文档中教了一部分,上网看乐各种教程都不行,研究了好几个小时,东拼西凑各个地方学一点,终于弄出来了,赶紧记录下来。
django用的静态文件路径:STATICFILES_DIRS部署的方式,文件路径一定要设置好。
注: python2.7 django1.10.6; 项目mysite,项目下有一个应用myapp
一、目录结构:
整个目录结构是这样的:
| mysite
| —— manage.py
| —— mysite
| —— | —— settings
| —— | ——…(urls等)
| —— templates
| —— myapp
| —— …(views等)
| —— | —— templates
| —— | —— | —— myapp
| —— | —— | —— | —— home.html
| —— | —— | —— | —— static
| —— | —— | —— | —— | —— css
| —— | —— | —— | —— | —— images
注意,文件夹结构比较复杂。
在项目文件夹下有一个templates文件夹,不过这个文件夹暂时没什么用,可以不用管(我也不知道为什么要有这么个文件夹)。
应用文件夹结构是这样的:
“myapp/templates/myapp/home.html”;
“myapp/templates/myapp/static/images”;
“myapp/templates/myapp/static/CSS”;
二、设置templates和静态路径
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'myapp/templates').replace('\\', '/'),
os.path.join(BASE_DIR, 'templates').replace('\\', '/')],
}
]
STATIC_ROOT = os.path.join(BASE_DIR, 'myapp/templates/myapp/static').replace('\\', '/')
STATICFILES_DIRS = (
('css', os.path.join(STATIC_ROOT, 'css').replace('\\', '/')),
('images', os.path.join(STATIC_ROOT, 'images').replace('\\', '/')),
)
三、修改urls.py文件
在urls.py开头加上一句:
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
在urls.py的最后加上以下内容:
#设置静态文件路径
urlpatterns += staticfiles_urlpatterns()
四、修改html文件
home.html文件相关内容如下:
<!DOCTYPE html>
<html lang="en">
<head>
<link href="/static/css/style.css" rel="stylesheet" type="text/css" />
<title>Home</title>
</head>
<body>
<a href="https://www.baidu.com/>
<img src="/static/images/logo.png" alt="logo"/>
</a>
</body>
</html>
改成自己的图片名称,注意图片和link的前缀:/static/images/ 别写成 static/images/ ,这样会无法显示。
感觉自己底子真的太差,这几天一点一点看官方文档感到非常吃力,很多地方都不懂,想直接看自己需要的部分又不知道该看哪。
为了学这个我已经好几天没好好看书了,最近大家都在看《人民的名义》,我也好想看,可是时间不允许。
加油吧少女。