django--static文件的管理

作网站,不会前端老是不行的,就算本身不深刻学习成为前端大拿,套用别人的css和js总仍是要会的,所以,静态文件的引用成为了一个topic。css

Django建立一个新项目的时候已经默认产生了一些配置,应对小项目足够了,若是追求完美的话,总还须要多了解一些。列出了如下topic。html

 

一、  一个不作任何额外配置的django项目能怎么处理static?前端

二、  好好规划的static文件目录又是什么样子的?web

三、  部署到生产该怎么办?django

四、  Django中谁在管理着这些static文件?纯代码层面了哟编程

 

答:windows

一、  没有额外本身添加配置时,和static文件有关的settings,以下(从settings.py中摘出来的)session

 

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # Application definition
 INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'systemadmin.apps.SystemadminConfig', ] # Static files (CSS, JavaScript, Images) # https://docs.djangoproject.com/en/2.0/howto/static-files/
 STATIC_URL = '/static/'

 

 

BASE_DIR -->项目的根目录,注释里都写了,若是想要获得项目中的文件路径,用os.path.join(BASE_DIR,….)app

INSTALLED_APPS --> 管理staticfiles的Django自带APP,就是这个django.contrib.staticfileside

STATIC_URL --> 文件夹取名要叫static,和BASE_DIR配合,用来找到文件的

 

有了这些配置,若是咱们要有css js image文件须要被html引用,那么须要听从如下作法:

1)         在建立的app目录下新建static文件夹,下面再建立app同名文件夹,这两个文件夹是必须的,再下层的目录随你喜欢,好比再建css js image文件夹,里面分别放你要用的css js和image文件。

2)         在建立的app目录下新建templates文件夹,下面再建立app同名文件夹,这两个文件夹是必须的,下面放要用的html文件。

3)         让html文件找到这些css js image文件须要:

a)         Html的head标签中

{% load static %}

b)         Head中Css的href用static拼路径

{% static ‘APP名字/path/css文件’ %}

c)         Body末尾Js的src也用static拼路径

{% static ‘APP名字/path/js文件’ %}

d)         静态文件的相互引用,好比css里面加了一个背景图片,load static不起做用了哟,要用相对路径去取

url(“相对路径”)

 

二、  1的基本配置在什么状况下不够用呢?不够用,就得本身加配置哦。

代码重用,在任何语言编程中都是须要的,在模板的编写中也同样,Django支持模板的继承和包含,所以,基本frame的html(页面布局),常组件的html(输入框、下拉框、多选框啦什么的)会想固然得放一块儿,你们都用css js放一块儿,而单独APP用到的html css js image放在APP的templates和static里面。因而造成了一个庞大的目录结构。

 

 

基于以上目录的安排,仅有基本配置可找不到相应的文件哦,须要修改。

1)         项目的settings.py中,增长STATICFILES_DIRS的[],表示除了app的static文件夹,还要找list中列出的这些地方。咱们把根目录下的static文件夹加进去,公用的这些css js和image就能找到了

 

 

2)         Html中仍是须要load static,再用{% static ‘相对路径’%}去拼路径,获取文件

3)         APP中是继承和包含基础的html,那么用{%extend ’相对路径‘%}和{% include ‘相对路径’ %}就好了

 

三、  部署在生产环境中,一般会将全部的static文件都放在一个地方,以方便管理。而开发模式下,咱们已经从2看到了庞大的目录结构,手动去提取不现实,django提供了管理工具,步骤(生产环境上):

1)         在settings.py中添加配置

STATIC_ROOT='/djangolearn/allstatic/'

2)         控制台中敲入

Python manage.py collectstatic

运行完成后,console给出提示

204 static files copied to 'C:\djangolearn\allstatic'.

注意了哦,这里是将全部的static文件所有copy到了上述路径,而不是项目路径下面,个人环境是windows的。

3)         把这个全部文件的集合放到一台web server上提供服务。这里要分状况讨论。

a)         和django程序在一台server上

b)         专用一台server放static

c)         放在云上

具体的部署还须要看how-to guides -->Deploying Django

 

四、  代码层,必须得认可,我尚未这个心性去看源代码。目前就知道:

1)         “django.contrib.staticfiles” Django的这个自带APP承包了对static文件的管理工做

2)         Setting.py文件中STATIC_URL指定了全部的app下创建static文件夹的名字,staticfiles这个app会自动去找叫static的文件夹

3)         Static文件夹下需再创建一层以APP名字命名的文件夹,以区分彼此

4)         公用的static能够放在一个目录下,但须要手动在settings.py文件中添加STATICFILES_DIRS参数的配置。

相关文章
相关标签/搜索