如何分离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笔记(1) 关于我们应不应该继续学习python
Oct 24 Python
使用Python的内建模块collections的教程
Apr 28 Python
Python时间的精准正则匹配方法分析
Aug 17 Python
python 生成器协程运算实例
Sep 04 Python
Python Excel处理库openpyxl使用详解
May 09 Python
浅谈Python小波分析库Pywavelets的一点使用心得
Jul 09 Python
Python帮你识破双11的套路
Nov 11 Python
pytorch实现seq2seq时对loss进行mask的方式
Feb 18 Python
浅谈如何使用python抓取网页中的动态数据实现
Aug 17 Python
python 可视化库PyG2Plot的使用
Jan 21 Python
Python 中数组和数字相乘时的注意事项说明
May 10 Python
Django框架模板用法详解
Jun 10 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
js 编写规范
2010/03/03 Javascript
DB.ASP 用Javascript写ASP很灵活很好用很easy
2011/07/31 Javascript
JS重要知识点小结
2011/11/06 Javascript
JavaScript设置IFrame高度自适应(兼容各主流浏览器)
2013/06/05 Javascript
javascript禁用键盘功能键让右击及其他键无效
2013/10/09 Javascript
单击某一段文字改写文本颜色
2014/06/06 Javascript
Javascript中this的用法详解
2014/09/22 Javascript
jquery判断输入密码两次是否相等
2020/04/22 Javascript
教你如何终止JQUERY的$.AJAX请求
2016/02/23 Javascript
js实现浏览器倒计时跳转页面效果
2016/08/12 Javascript
微信小程序 自定义对话框实例详解
2017/01/20 Javascript
ES6入门教程之Class和Module详解
2017/05/17 Javascript
javascript基于定时器实现进度条功能实例
2017/10/13 Javascript
浅谈Node模块系统及其模式
2017/11/17 Javascript
vue-cli项目代理proxyTable配置exclude的方法
2018/09/20 Javascript
antd Upload 文件上传的示例代码
2018/12/14 Javascript
微信小程序下拉框组件使用方法详解
2018/12/28 Javascript
在Create React App中启用Sass和Less的方法示例
2019/01/16 Javascript
详解微信小程序之一键复制到剪切板
2019/04/24 Javascript
vue cli安装使用less的教程详解
2019/07/12 Javascript
分享JS表单验证源码(带错误提示及密码等级)
2020/01/05 Javascript
js实现自定义滚动条的示例
2020/10/27 Javascript
python实现根据图标提取分类应用程序实例
2014/09/28 Python
Windows下用py2exe将Python程序打包成exe程序的教程
2015/04/08 Python
在Python的Django框架中编写编译函数
2015/07/20 Python
python实现对指定输入的字符串逆序输出的6种方法
2018/04/26 Python
python使用scrapy发送post请求的坑
2018/09/04 Python
Python如何将图像音视频等资源文件隐藏在代码中(小技巧)
2020/02/16 Python
python数据预处理 :数据共线性处理详解
2020/02/24 Python
使用CSS3中的calc()属性来以算式表达尺寸数值
2016/06/06 HTML / CSS
高一新生军训方案
2014/05/12 职场文书
领导干部群众路线个人对照检查材料思想汇报
2014/09/30 职场文书
三峡导游词
2015/01/31 职场文书
外贸采购员岗位职责
2015/04/03 职场文书
对学校的意见和建议
2015/06/04 职场文书
php实现自动生成验证码的实例讲解
2021/11/17 PHP