Django 静态文件配置(static files)
Django version: 1.9
Python versrion: 3.5.2
因为据说除了Firefox之外的浏览器都会乱码, 所以放上截图

这几天Django配置静态文件(本例是要加载index.css), 总是不对,最后终于试对了,这里记录下,方便以后查阅
最后实在没办法把Django1.9的官方文档下载下来(网页版),仔细的阅读了下相关的章节。
首先看下项目的结构图(pycharm2016 professional):

1.首先在INSTALLED_APPS中要有'django.contrib.staticfiles'
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'news',
]
2.在settings.py中加入:
STATIC_URL = '/static/' STATICFILES_DIRS = [
os.path.join(BASE_DIR,"news/static/"),
]
3.加载静态文件时:
{% load staticfiles %}
<link rel="stylesheet" type="text/css" href="{% static 'news/css/index.css' %}"/>
这里的路径是根据上面的文件结构来写的。
事实上在Django官方文档例子(投票系统Writing your first Django app, part 6中有讲到这些内容) 另外,有时出错误了可以这样修改:
将上面的 href="{% static 'news/css/index.css' %}改成:href="{% static 'css/index.css' %}
运行命令:python manage.py runserver 可能会有正的结果:
此时运行:python manage.py findstatic css/index.css
箭头指的地方的news是指news这个文件夹,这里要说的是第一条命令:python manage.py findstatic css/index.css找不到css
文件,那么肯定是这里路径的问题,这样修改路径后,可以找到index.css文件,那就可以到html中修改相应的路径了。 2017.11.02更新:
最近在写一个项目时出现了一个bug,开始一直没找到原因,最后发现是因为app与项目根目录下的静态文件同名,
导致冲突。这里更新下具体如何避免冲突的问题。 通常情况下,我们会在项目建立时在项目根目录建立一个static目录(上图中并没有,上图指最上面的目录树截图,下同),
创建时默认有一个templates目录,当项目越来越大时,我们不可能将所有静态文件都放在这个目录里,而是各app独立开来。 那么具体要怎么独立呢 项目根目录有
static目录---> 放公共的静态文件,如jquery, bootstrap等
templates目录--->放整个项目初始的网页等,如首页 app中,以上面的news为例:
先建立static目录:
static中建立app名字(上图中的news)的次级目录,这是关键
news中再分别建立css,js,img等次级目录
templates与static一样,也是先建立以当前app名字命名的次级目录
做完这些,我们需要将app静态文件路径加入到setting中:
os.path.join(BASE_DIR, "news/static/"),
注意,是在原有的要目录的静态文件的基础上添加。
同样的道理, 在网页或者视图函数中的路径也就加上对应的app名,例如在网页的的模板文件中(标签)
在没有相互独立时是这样的:
{% extends 'index.html' %}
在设计相互独立后就该是这样的:
{% extends 'news/index.html' %}
html中代码:

经过django渲染到浏览器后:

注意这里的users是与上图中的news一样是一个app,(实在找不到原来的代码了)
对于渲染后的结果我个人倾向于认为第一个 /static/css/bootstrap.min.css中的
static指代根目录中的static
而 /static/users/css/login.css中的static指代users/static/
因为这里对应你setting中的设置。
经过上面这一系列的设置,各app可以引用公共的静态文件,同时各app自己的静态文件也相对独立开来 ,来容易导致冲突
Django 静态文件配置(static files)的更多相关文章
- Django静态文件配置-request方法-ORM简介-字段的增删改查
app的创建注意事项: 在Django新创建的app要在seetings.py中添加注册,才会生效 创建app:django-adminapp an startapp app名称 或者 python3 ...
- 55 Django静态文件配置
一.Django静态文件配置 1.项目文件夹,新建一个文件夹statics 文件夹 2.在配置文件settings.py中,配置: 文件中有第句: STATIC_URL = '/static/'#静态 ...
- Django 静态文件配置 (Nginx)
初学Django,在访问静态文件时候遇到很多误区,一直配置不成功,在此记录一下. Django静态文件访问分为两种:一种是Debug模式下,测试开发网站时对静态文件的访问,一种是实际生产环境中对静态文 ...
- django静态文件配置
开发环境配置 需要下面几个步骤 1. 在app目录下创建static目录,将静态文件和相关文件夹放到此目录下,如your_app/static/img等 2. 确保settings.py中的INSTA ...
- Django——静态文件配置
本文目的 最近用django开发项目,发现django的静态文件(js,css和img等)配置比较麻烦,开发环境和生产环境的配置还不一样,这里记录一下,作为备忘.我当前使用的版本是django v1. ...
- Django静态文件配置 request对象 Django操作MySQL
Django中的文件介绍 render.HttpResponse和redirect 当我们想起手写一个项目,创建好应用并且注册之后,在urls.py文件先导入app文件夹下migrations下的vi ...
- django 静态文件配置
配置静态文件 在settings.py中尾部添加一下内容 STATICFILES_DIRS = [ #路径 BASE_DIR:项目文件根目录 os.path.join(BASE_DIR,'static ...
- django静态文件配置和使用
一.首先需要了解的知识点是: 1.出于对效率和安全的考虑,django管理静态文件的功能仅限于在开发阶段的debug模式下使用,且需要在配置文件的INSTALLED_APPS中加入django.con ...
- 使用nginx部署Django静态文件配置
首先,我们配置静态文件,要在setting.py里面加入如下几行代码: # settings.py # the settings above # STATIC SETTINGS STATIC_URL ...
随机推荐
- python正则表达式
group 组是通过 "(" 和 ")" 元字符来标识的. "(" 和 ")" 有很多在数学表达式中相同的意思:它们一起 ...
- 条件随机场(CRF) - 1 - 简介(转载)
转载自:http://www.68idc.cn/help/jiabenmake/qita/20160530618222.html 首先我们先弄懂什么是"条件随机场",然后再探索其详 ...
- springmvc 自定义注解 以及自定义注解的解析
1,自定义注解名字 @Target({ElementType.TYPE, ElementType.METHOD}) //类名或方法上@Retention(RetentionPolicy.RUNTI ...
- node.js Websocket实现扫码二维码登录---GoEasy
最近在做一个扫码登录功能,为此我还在网上搜了一下关于微信的扫描登录的实现方式.当这个功能完成了后,我决定将整个实现思路整理出来,方便自己以后查看也方便其他有类似需求的程序猿些. 要实现扫码登录我们需要 ...
- c# 函数
1.输入三个数,求最大的数. 2.输入一个数,求1~n的和. 3.求n的阶乘. 4.输入一个小于等于100的数,判断是否是100,还是小于10,还是两位数.
- java常用IO流数据流小结
类名 常用方法 说明 输入流 InputStream int read(); 只能读字节流,虽然返回值是int,但只有低8位起作用. DataInputStream Type readType() ...
- operating system
一.对于子进程,系统调用fork()的返回值为0:而对于父进程,返回值为子进程的进程标识符
- 自动运维:Ansible -ansible tower
文档主页:http://docs.ansible.com/参考文档:http://docs.ansible.com/ansible/参考文档:http://docs.ansible.com/ansib ...
- C++ 数字转字符串
#include <sstream> string num2str( int i) { stringstream ss; ss<<i; return ss.strs(); }
- Does Lamda expression return value?
Basically, the compiler does this for you. If you write a lambda as a single statement (and don't in ...
此时运行:python manage.py findstatic css/index.css