最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Djang中靜態(tài)文件配置方法

 更新時間:2015年07月30日 14:43:02   作者:starof  
這篇文章主要介紹Djang中靜態(tài)文件配置方法的相關(guān)資料,django靜態(tài)文件配置主要是為了讓用戶請求django服務(wù)器時能找到靜態(tài)文件返回,需要的朋友可以參考下

下面通過圖文并茂的方法給大家詳細介紹下Djang中靜態(tài)文件配置方法

一、django靜態(tài)文件配置原理
靜態(tài)文件配置就是為了讓用戶請求時django服務(wù)器能找到靜態(tài)文件返回。

首先要理解幾個概念:

媒體文件:用戶上傳的文件
靜態(tài)文件:css,js,image等
開發(fā)環(huán)境:使用django內(nèi)置服務(wù)器處理靜態(tài)文件
生產(chǎn)環(huán)境:使用apache2/nginx服務(wù)器處理靜態(tài)文件映射
所以在配置時要分清楚開發(fā)環(huán)境還是生產(chǎn)環(huán)境,這個后面會詳細介紹。

下面先介紹一下服務(wù)器查找靜態(tài)文件的原理,這樣我們才能更好的配置。

1、django.contrib.staticfiles
django.contrib.staticfiles是django1.3新增的一個app來幫助開發(fā)者管理靜態(tài)文件【js,css等】。

django1.3之前的靜態(tài)文件都是用MEDIA_URL和MEDIA_ROOT來控制的。

為了將媒體文件【用戶上傳的文件】和靜態(tài)文件做區(qū)分,django1.3通過MEDIA_XXX配置來處理媒體文件,通過STATIC_XXX配置項來處理靜態(tài)文件。

staticfiles使開發(fā)者可以將靜態(tài)文件分配到app目錄或任意指定目錄。

2、MEDIA_XXX和STATIC_XXX配置項的區(qū)別
MEDIA_XXX配置項用來管理媒體文件。經(jīng)常由FileFields字段上傳,它們被保存在settings.MEDIA_ROOT指定的目錄下,通過settings.MEDIA_URL指定的路徑訪問。

STATIC_XXX配置項用來管理靜態(tài)文件。它們通過manage.py collectstatic命令匯集到settings.STATIC_ROOT目錄,并通過settings.STATIC_URL指定的路徑訪問。

3、 靜態(tài)文件相關(guān)配置項詳解
STATIC_ROOT配置項

用來指定執(zhí)行manage.py collectstatic時靜態(tài)文件存放的路徑。在生成環(huán)境中,集中存放靜態(tài)資源有利于使用Lighttpd/Nginx/apache2托管靜態(tài)資源。為了方便調(diào)試,通常設(shè)置如下:

復(fù)制代碼 代碼如下:

SITE_ROOT = os.path.dirname(os.path.abspath(__file__))
SITE_ROOT = os.path.abspath(os.path.join(SITE_ROOT, '../'))
STATIC_ROOT = os.path.join(SITE_ROOT, 'collectedstatic')

STATIC_URL配置項

django模板中,可以引用{{STATIC_URL}}變量避免把路徑寫死。通常使用默認設(shè)置

復(fù)制代碼 代碼如下:

STATIC_URL = '/static/'

ADMIN_MEDIA_PREFIX配置項

ADMIN_MEDIA_PREFIX必須為如下配置,以便staticfiles能夠正確找到django.contrib.admin的靜態(tài)資源:

復(fù)制代碼 代碼如下:

ADMIN_MEDIA_PREFIX = STATIC_URL + 'admin/'

 在模板中使用STATIC_URL

復(fù)制代碼 代碼如下:

<link rel="stylesheet" href="{{ STATIC_URL }}css/core.css">

原理懂了后,接下來介紹開發(fā)環(huán)境和生產(chǎn)環(huán)境中靜態(tài)文件具體配置。

我的django版本是1.4.21,以此版本做介紹。

復(fù)制代碼 代碼如下:

>>> import django
>>> print django.get_version()
1.4.21

二、開發(fā)環(huán)境
django1.4,21中默認已安裝了staticfiles app,所以開發(fā)環(huán)境中對靜態(tài)文件的訪問不需要對django做任何配置。

有一點:開發(fā)環(huán)境staticfiles查找靜態(tài)文件的順序取決于STATIC_FINDERS配置項,默認配置

復(fù)制代碼 代碼如下:

STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
#    'django.contrib.staticfiles.finders.DefaultStorageFinder',
)

FileStstemFinder用來用STATICFILES_DIRS【默認為空】指定的路徑中查找額外的靜態(tài)文件。像jquery,bootstrap等這樣公用的資源文件都是在多個不同的app中共用的,django提供了公有的目錄來放這些文件,這個配置參數(shù)就是:STATICFILES_DIRS
AppDirectoriesFinder從INSTALLED_APPS元組中的APP所在包的static目錄中查找資源文件。
使用如下。

1、新建項目lxyproject

復(fù)制代碼 代碼如下:

[root@yl-web srv]# django-admin.py startproject lxyproject

2、在項目中新建一個app名叫hello

復(fù)制代碼 代碼如下:

[root@yl-web lxyproject]# python manage.py startapp hello
[root@yl-web lxyproject]# ls
hello  lxyproject  manage.py

在hello app下建一個static目錄用來存放靜態(tài)文件。

復(fù)制代碼 代碼如下:

[root@yl-web hello]# mkdir static
[root@yl-web hello]# ls
__init__.py  models.py  static  tests.py  views.py

然后在static目錄新建一個hello.txt的靜態(tài)文件。

復(fù)制代碼 代碼如下:

[root@yl-web hello]# cd static/
[root@yl-web static]# ls
hello.txt
[root@yl-web static]# cat hello.txt
hello.txt's content:congratulations!!

3、在項目的settings.py文件中INSTALLED_APPS中配置hello app

復(fù)制代碼 代碼如下:

INSTALLED_APPS = (
    ...
    'hello',
)

4、運行項目

復(fù)制代碼 代碼如下:

[root@yl-web lxyproject]# python manage.py runserver 0.0.0.0:9000

5、通過url訪問

在static目錄下新建一個images目錄放一張sheep.png圖片,同理通過url訪問

三、生產(chǎn)環(huán)境
前面也說了,在生成環(huán)境中,集中存放靜態(tài)資源有利于使用Lighttpd/Nginx托管靜態(tài)資源。而生產(chǎn)環(huán)境一般是把靜態(tài)文件放在項目根目錄下的static目錄下。

默認配置

復(fù)制代碼 代碼如下:

STATIC_ROOT = ''
STATIC_URL = '/static/'
STATICFILES_DIRS = (
)

我們要做的是

1、配置服務(wù)器,我用的是apache。

安裝配置詳情可參考:

Ubuntu apache2服務(wù)器配置

centos7 apache httpd安裝和配置django項目

2、在項目根目錄下創(chuàng)建collectedstatic目錄。

3、配置settings.py

import os

SITE_ROOT = os.path.dirname(os.path.abspath(__file__))
SITE_ROOT = os.path.abspath(os.path.join(SITE_ROOT, '../'))
STATIC_ROOT = os.path.join(SITE_ROOT, 'collectedstatic')
STATIC_URL = '/static/'
STATICFILES_DIRS = (
 # Put strings here, like "/home/html/static" or "C:/www/django/static".
 # Always use forward slashes, even on Windows.
 # Don't forget to use absolute paths, not relative paths.
)
INSTALLED_APPS = (
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.sites',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 # Uncomment the next line to enable the admin:
 # 'django.contrib.admin',
 # Uncomment the next line to enable admin documentation:
 # 'django.contrib.admindocs',
 'hello',
)

 
4、運行python manage.py collectstatic收集所有已安裝的APP的靜態(tài)文件到根目錄的collectedstatic【即STATIC_ROOT】中

 

復(fù)制代碼 代碼如下:

[root@yl-web lxyproject]# python manage.py collectstatic
You have requested to collect static files at the destination
location as specified in your settings.
This will overwrite existing files!
Are you sure you want to do this?
Type 'yes' to continue, or 'no' to cancel: yes
Copying '/srv/lxyproject/hello/static/images/sheep.png'
1 static file copied.
 
5、配置服務(wù)器,將/static/路徑指向STATIC_ROOT目錄。

即在虛擬主機中配置

復(fù)制代碼 代碼如下:

Alias /static/ /srv/lxyproject/collectedstatic/

6、配置至此完成,通過瀏覽器訪問

 


真正發(fā)布一個django項目時,對靜態(tài)文件的管理可能需要額外做一些工作:

Less / CoffeeScript 等自動編譯成css/js
"壓縮" css/js文件,提高瀏覽器加載速度
合并零碎的css/js文件,減少瀏覽器請求次數(shù)
靜態(tài)資源文件的版本話:瀏覽器會緩存靜態(tài)文件,后臺代碼和靜態(tài)資源文件都發(fā)生更新后,瀏覽器很可能從緩存提取過期的靜態(tài)資源,導(dǎo)致頁面顯示異常。

以上就是Djang中靜態(tài)文件配置方法的全部內(nèi)容,希望大家喜歡。

相關(guān)文章

  • Python虛擬環(huán)境安裝及操作命令詳解

    Python虛擬環(huán)境安裝及操作命令詳解

    本文主要介紹了Python虛擬環(huán)境安裝及操作命令詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-07-07
  • 使用python處理題庫表格并轉(zhuǎn)化為word形式的實現(xiàn)

    使用python處理題庫表格并轉(zhuǎn)化為word形式的實現(xiàn)

    這篇文章主要介紹了使用python處理題庫表格并轉(zhuǎn)化為word形式的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-04-04
  • Python實現(xiàn)將xml導(dǎo)入至excel

    Python實現(xiàn)將xml導(dǎo)入至excel

    本文給大家講解的是使用Python的Testlink實現(xiàn)將實現(xiàn)將xml導(dǎo)入至excel表格中,方法非常的簡單,另外附上其他小伙伴的方法,有需要的童鞋們可以參考下。
    2015-11-11
  • 用python 繪制莖葉圖和復(fù)合餅圖

    用python 繪制莖葉圖和復(fù)合餅圖

    這篇文章主要介紹了用python 繪制莖葉圖和復(fù)合餅圖,幫助大家更好的理解和學習使用python,感興趣的朋友可以了解下
    2021-02-02
  • python文件比較示例分享

    python文件比較示例分享

    本文介紹了Python比較兩個文本文件內(nèi)容,如果不同, 給出第一個不同處的行號和列號,大家參考使用吧
    2014-01-01
  • python文件名批量重命名腳本實例代碼

    python文件名批量重命名腳本實例代碼

    這篇文章主要給大家介紹了關(guān)于python文件名批量重命名腳本的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-04-04
  • 使用Python將Exception異常錯誤堆棧信息寫入日志文件

    使用Python將Exception異常錯誤堆棧信息寫入日志文件

    這篇文章主要介紹了使用Python將Exception異常錯誤堆棧信息寫入日志文件,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • python BeautifulSoup庫的安裝與使用

    python BeautifulSoup庫的安裝與使用

    這篇文章主要介紹了python BeautifulSoup庫的安裝與使用,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-12-12
  • Python實現(xiàn)聚類K-means算法詳解

    Python實現(xiàn)聚類K-means算法詳解

    這篇文章主要介紹了Python實現(xiàn)聚類K-means算法詳解,K-means(K均值)算法是最簡單的一種聚類算法,它期望最小化平方誤差,具體詳解需要的朋友可以參考一下
    2022-07-07
  • Python?find()、rfind()方法及作用

    Python?find()、rfind()方法及作用

    這篇文章主要介紹了Python?find()、rfind()方法,find方法的作用檢索是否指定的字符串,如果存在返回首次出現(xiàn)該字符串的索引,如果不存在返回-1,rfind 方法的作用和find方法作用相同,本文結(jié)合示例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2022-12-12

最新評論

武穴市| 兰溪市| 宾阳县| 防城港市| 兰溪市| 阜康市| 广东省| 鄯善县| 榆中县| 阳曲县| 云南省| 阳东县| 徐汇区| 纳雍县| 门头沟区| 稻城县| 白朗县| 南澳县| 延川县| 黄大仙区| 三门峡市| 浮梁县| 孝义市| 灌南县| 永新县| 上虞市| 水富县| 金乡县| 和平区| 鄂州市| 徐闻县| 邹城市| 新闻| 信阳市| 合山市| 长葛市| 堆龙德庆县| 盐津县| 财经| 汶川县| 恩平市|