staticfiles:这是一个静态资源管理的app,django.contrib.staticfiles。老的版本中,静态资源管理一直是一个问题,部分app发布的时候需要带上静态资源,在部署的时候必须将每个app存在的static静态资源复制到同一个static目录。引入staticfiles之后,执行命令:python manage.py collectstatic 就可以方便的将所用到的app中的静态资源复制到同一目录。
staticfiles的主要相关配置与分析
STATIC_ROOT:运行上边提到的命令:python manage.py collectstatic 之后静态文件将要复制到的目录,这个目录只有在运行collectstatic时候才会用到,不能想当然的以为这个目录和MEDIA_ROOT的作用是相同的,否则在开发环境的时候可能一直无法找到静态文件。
STATIC_URL:设置的static file的起始url,这个只是在template里边引用到,这个参数和MEDIA_URL的含义相同,
STATICFILES_DIRS:和TEMPLATE_DIRS的含义差不多,就是除了各个app的static目录以外还需要管理的静态文件设置,比如项目的公共文件差不多。
各个app目录下的静态文件static/django会自动找到,这个点和app下的templates目录下差不多
在urls.py中加入静态文件处理的代码
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
# This will work if DEBUG is True
urlpatterns += staticfiles_urlpatterns()
一.修改settings.py
也可以使用
二.修改articles/templates/articles.html的内容如下
{% extends "base.html" %}
{% block content %}
<h2>Language is :{{ language }}</h2>
<h2>Session Language is : {{ session_language }}</h2>
{% if articles.count > 0 %}
{% for article in articles %}
<div>
<h2><a href="/articles/get/{{ article.id }}/">{{ article.title }}</a></h2>
<p> {{ article.body|lower|truncatewords:"10" }}</p>
</div>
{% endfor %}
{% else %}
<p>None to show!</p>
{% endif %}
{% endblock %}
三.修改articles/templates/article.html的内容如下
{% extends "base.html" %}
{% block sidebar %}
<ul>
<li><a href="/articles/all">Articles</a></li>
</ul>
{% endblock %}
{% block content %}
<h1> {{ article.title }} </h1>
<p> {{ article.body }} </p>
{% endblock %}
四.修改django_test/templates/base.html的内容如下
{% load static %}
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<title> {% block title %} My Base Template {% endblock %} </title>
<meta charset="UTF-8">
<link rel="stylesheet" type="text/css" href="{% static 'assets/css/default.css' %}">
</head>
<body>
<div id="page">
<div id="sidebar">
{% block sidebar %}
<ul>
<li><a href="/articles/all">Articles</a></li>
<li><a href="/admin/">Admin</a></li>
</ul>
{% endblock %}
</div>
<div id="content">
{% block content %} This is the content area {% endblock %}
<img src="{% static 'assets/image/python-logo.png' %}" width="200" />
</div>
</div>
</body>
</html>
五.创建django_test/static/css文件夹和django_test/static/images文件夹
django_test/static/css/default.css 的内容如下
body{
text-align:center;
}
#page{
width: 960px;
text-align:left;
margin:10px auto 20px auto;
background-color: #0c0c0c;
}
#sidebar{
float: left;
width: 200px;
border: 1px solid #000;
}
#content{
float: left;
width: 600px;
border:1px solid #f00;
padding: 10px;
}
图片可放在django_test/static/images/
如python-logo.png
六.修改STATIFILES_DIRS内容如下
python manage.py collectstatic命令,这将从Django资源包中复制必须的静态文件到STATIC_ROOT指示的static文件夹中