如何分离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 学习笔记
Dec 27 Python
Python unittest单元测试框架总结
Sep 08 Python
Python 支付整合开发包的实现
Jan 23 Python
在python下读取并展示raw格式的图片实例
Jan 24 Python
selenium python 实现基本自动化测试的示例代码
Feb 25 Python
python中如何进行连乘计算
May 28 Python
django restframework serializer 增加自定义字段操作
Jul 15 Python
pycharm使用技巧之自动调整代码格式总结
Nov 04 Python
使用Django的JsonResponse返回数据的实现
Jan 15 Python
python 合并多个excel中同名的sheet
Jan 22 Python
超详细Python解释器新手安装教程
May 10 Python
pandas DataFrame.shift()函数的具体使用
May 24 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
德生BCL3000的电路分析和打磨
2021/03/02 无线电
sae使用smarty模板的方法
2013/12/17 PHP
php进程间通讯实例分析
2016/07/11 PHP
PHP进阶学习之命名空间基本用法分析
2019/06/18 PHP
理解JAVASCRIPT中hasOwnProperty()的作用
2013/06/05 Javascript
jquery validate在ie8下的bug解决方法
2013/11/13 Javascript
node.js中的fs.unlinkSync方法使用说明
2014/12/15 Javascript
javascript实现了照片拖拽点击置顶的照片墙代码
2015/04/03 Javascript
jquery实现的判断倒计时是否结束代码
2016/02/05 Javascript
javascript的正则匹配方法学习
2016/02/24 Javascript
Node.js的特点详解
2017/02/03 Javascript
基于EasyUI的基础之上实现树形功能菜单
2017/06/28 Javascript
Vue2路由动画效果的实现代码
2017/07/10 Javascript
深入理解ES6学习笔记之块级作用域绑定
2017/08/19 Javascript
jQuery实现获取table中鼠标click点击位置行号与列号的方法
2017/10/09 jQuery
基于JS判断对象是否是数组
2020/01/10 Javascript
JavaScript中break、continue和return的用法区别实例分析
2020/03/02 Javascript
在Angular中实现一个级联效果的下拉框的示例代码
2020/05/20 Javascript
javascript解析json格式的数据方法详解
2020/08/07 Javascript
[19:54]夜魇凡尔赛茶话会 第一期02:看图识人
2021/03/11 DOTA
python实现网站的模拟登录
2016/01/04 Python
利用Python对文件夹下图片数据进行批量改名的代码实例
2019/02/21 Python
浅谈spring boot 集成 log4j 解决与logback冲突的问题
2020/02/20 Python
Python页面加载的等待方式总结
2021/02/28 Python
详解css3使用transform出现字体模糊的解决办法
2020/10/16 HTML / CSS
Shopee印度尼西亚:东南亚与台湾市场最大电商平台
2018/06/17 全球购物
Homestay中文官网:全球寄宿家庭
2018/10/18 全球购物
怎样建立和理解非常复杂的声明?例如定义一个包含N 个指向返回 指向字符的指针的函数的指针的数组?
2013/03/19 面试题
综合测评自我鉴定
2013/10/08 职场文书
导师对论文的学术评语
2015/01/04 职场文书
工作时间证明
2015/06/15 职场文书
文化大革命观后感
2015/06/17 职场文书
人代会简报
2015/07/21 职场文书
2016年寒假社会实践活动心得体会
2015/10/09 职场文书
红灯733-1型14管5波段半导体收音机
2021/04/22 无线电
pandas进行数据输入和输出的方法详解
2022/03/23 Python