如何分离django中的媒体、静态文件和网页


Posted in Python onNovember 12, 2019

django项目中,占很大体积的是静态文件,媒体文件还有html代码,那我们该如何把它们分离出来以方便我们和服务器去管理和使用它们。

static 文件

static ,顾名思义就是静态文件,django自带了一个命令讲项目中所有的静态文件提取出来

python3 manage.py collectstatic

我习惯将这些可以从外部引入的文件放在项目的根目录下

DemoProject
--DemoProject
--DemoApp
--static
--manage.py

是的,就是它.

不过在此之前,我们需要在项目的setting.py中去设置提取文件所要存储的位置 STATIC_ROOT

STATIC_ROOT = os.path.join(BASE_DIR, "static")

那这样,我们运行完上面的命令就会发现我们的项目结构中会多一个 static 文件

然后配置 DemoProject 下的 url ,添加

from django.contrib.staticfiles.urls import staticfiles_urlpatterns
from django.conf.urls.static import static
from django.conf import settings


urlpatterns = [
  url(r'^admin/', admin.site.urls),
]


if settings.DEBUG or True:
  urlpatterns += staticfiles_urlpatterns()

当然这个if判断是在debug为true的时候支持这样的访问,那如果在真实生产环境中需要修改遮盖判断

不过到这里还没有结束,为了方便的引用我们需要在setting.py中添加

STATICFILES_DIRS = [
  ('bootstrap',os.path.join(BASE_DIR, 'static/bootstrap').replace('\\','/')),
]

注意这种方式在html中可以直接以如下方式访问

<link rel="stylesheet" href="{% static " rel="external nofollow" bootstrap/css/bootstrap.min.css" %}">

注意要在第一行加上 {% load staticfiles %}

media 文件

网站上总是会有音乐视频或者图片等体积比较大的文件,那我们将这些也从django项目中分离出来并进行调用

首先我们在和static同目录下新建一个media文件夹,在media中新建一个image作为我们存放图片的文件夹

结构如下:

DemoProject
--DemoProject
--DemoApp
--static
--media
---image
--manage.py

第一步:在 setting.py 最后添加

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, "media")

第二部:在urls.py中

在 urlpatterns += staticfiles_urlpatterns()
下面添加

urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

说出来你可能不信,这样就ok了

<img src="/media/image/test.png" alt="">

这样就可以访问我们的media/image下的图片或者视频了

templates

如果我们想把项目中的网页代码文件归类分离出来

第一步:

TEMPLATES = [
  {
    'BACKEND': 'django.template.backends.django.DjangoTemplates',
    'DIRS': [
      os.path.join(BASE_DIR, 'templates').replace('\\','/'),
    ],
    'APP_DIRS': True,
    'OPTIONS': {
      'context_processors': [
        'django.template.context_processors.debug',
        'django.template.context_processors.request',
        'django.contrib.auth.context_processors.auth',
        'django.contrib.messages.context_processors.messages',
      ],
    },
  },
]

在上面代码的DIRS中添加你网页代码的路径,如果也想和我一样放在根路径下可以和我一样

os.path.join(BASE_DIR, 'templates').replace('\\','/')

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
浅析Python多线程下的变量问题
Apr 28 Python
Python编程中用close()方法关闭文件的教程
May 24 Python
Python实现比较两个文件夹中代码变化的方法
Jul 10 Python
Python 正则表达式入门(中级篇)
Dec 07 Python
WINDOWS 同时安装 python2 python3 后 pip 错误的解决方法
Mar 16 Python
Python模拟随机游走图形效果示例
Feb 06 Python
一条命令解决mac版本python IDLE不能输入中文问题
May 15 Python
python和shell获取文本内容的方法
Jun 05 Python
可能是最全面的 Python 字符串拼接总结【收藏】
Jul 09 Python
基于Python的微信机器人开发 微信登录和获取好友列表实现解析
Aug 21 Python
python中实现词云图的示例
Dec 19 Python
selenium与xpath之获取指定位置的元素的实现
Jan 26 Python
pygame实现烟雨蒙蒙下彩虹雨
Nov 11 #Python
Python实现元素等待代码实例
Nov 11 #Python
如何基于python生成list的所有的子集
Nov 11 #Python
使用django和vue进行数据交互的方法步骤
Nov 11 #Python
如何使用python进行pdf文件分割
Nov 11 #Python
python实发邮件实例详解
Nov 11 #Python
Python 中 -m 的典型用法、原理解析与发展演变
Nov 11 #Python
You might like
CI框架在CLI下执行占用内存过大问题的解决方法
2014/06/17 PHP
laravel 5 实现模板主题功能(续)
2015/03/02 PHP
抛弃 PHP 代价太高
2016/04/26 PHP
php模拟post上传图片实现代码
2016/06/24 PHP
PHP使用两个栈实现队列功能的方法
2018/01/15 PHP
PHP基于进程控制函数实现多线程
2020/12/09 PHP
extjs 学习笔记(三) 最基本的grid
2009/10/15 Javascript
用js的for循环获取radio选中的值
2013/10/21 Javascript
js字符串截取函数substr substring slice使用对比
2013/11/27 Javascript
淘宝网提供的国内NPM镜像简介和使用方法
2014/04/17 Javascript
JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)
2016/12/14 Javascript
js中编码函数:escape,encodeURI与encodeURIComponent详解
2017/03/21 Javascript
jquery实现全选、全不选以及单选功能
2017/03/23 jQuery
React数据传递之组件内部通信的方法
2017/12/31 Javascript
详解express + mock让前后台并行开发
2018/06/06 Javascript
vue打包使用Nginx代理解决跨域问题
2018/08/27 Javascript
如何从头实现一个node.js的koa框架
2019/06/17 Javascript
js的新生代垃圾回收知识点总结
2019/08/22 Javascript
中级前端工程师必须要掌握的27个JavaScript 技巧(干货总结)
2019/09/23 Javascript
原生javascript运动函数的封装示例【匀速、抛物线、多属性的运动等】
2020/02/23 Javascript
JavaScript 异步时序问题
2020/11/20 Javascript
[01:01:52]DOTA2-DPC中国联赛正赛 iG vs LBZS BO3 第一场 3月4日
2021/03/11 DOTA
python基础教程之基本内置数据类型介绍
2014/02/20 Python
将Python代码嵌入C++程序进行编写的实例
2015/07/31 Python
Zabbix实现微信报警功能
2016/10/09 Python
Python3 pip3 list 出现 DEPRECATION 警告的解决方法
2019/02/16 Python
django Layui界面点击弹出对话框并请求逻辑生成分页的动态表格实例
2020/05/12 Python
Ubuntu权限不足无法创建文件夹解决方案
2020/11/14 Python
使用CSS3的appearance属性改变任何元素的浏览器默认风格
2012/12/24 HTML / CSS
海淘母婴商城:国际妈咪
2016/07/23 全球购物
毕业生的自我评价
2013/12/30 职场文书
元旦获奖感言
2014/03/08 职场文书
装修活动策划方案
2014/08/27 职场文书
学习型家庭事迹材料
2014/12/20 职场文书
学雷锋日活动总结
2015/02/06 职场文书
2016大学军训心得体会
2016/01/11 职场文书