如何分离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使用递归解决全排列数字示例
Feb 11 Python
给Python入门者的一些编程建议
Jun 15 Python
Python中将字典转换为XML以及相关的命名空间解析
Oct 15 Python
利用Hyperic调用Python实现进程守护
Jan 02 Python
使用pandas批量处理矢量化字符串的实例讲解
Jul 10 Python
Python BS4库的安装与使用详解
Aug 08 Python
Python实现按逗号分隔列表的方法
Oct 23 Python
python同时遍历数组的索引和值的实例
Nov 15 Python
numpy数组做图片拼接的实现(concatenate、vstack、hstack)
Nov 08 Python
python GUI库图形界面开发之PyQt5动态(可拖动控件大小)布局控件QSplitter详细使用方法与实例
Mar 06 Python
python反爬虫方法的优缺点分析
Nov 25 Python
Selenium 配置启动项参数的方法
Dec 04 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
mysql From_unixtime及UNIX_TIMESTAMP及DATE_FORMAT日期函数
2010/03/21 PHP
php学习笔记 数组的常用函数
2011/06/13 PHP
ThinkPHP令牌验证实例
2014/06/18 PHP
php实现获取及设置用户访问页面语言类
2014/09/24 PHP
Yii基于CActiveForm的Ajax数据验证用法示例
2016/07/14 PHP
PHP序列化的四种实现方法与横向对比
2018/11/29 PHP
laravel5使用freetds连接sql server的方法
2018/12/07 PHP
Laravel服务容器绑定的几种方法总结
2020/06/14 PHP
IE和Mozilla的兼容性汇总event
2007/08/12 Javascript
基于jquery的实现简单的表格中增加或删除下一行
2010/08/01 Javascript
javascript中的prototype属性使用说明(函数功能扩展)
2010/08/16 Javascript
基于JQuery 选择器使用说明介绍
2013/04/18 Javascript
js实现点击切换TAB标签实例
2015/08/21 Javascript
js发送短信倒计时的简单实现方法
2016/09/08 Javascript
浅谈EasyUI常用控件的禁用方法
2016/11/09 Javascript
Vue渲染过程浅析
2019/03/14 Javascript
jQuery鼠标滑过横向时间轴样式(代码详解)
2019/11/01 jQuery
JS判断浏览器类型与操作系统的方法分析
2020/04/30 Javascript
解决Vue + Echarts 使用markLine标线(precision精度问题)
2020/07/20 Javascript
Element Cascader 级联选择器的使用示例
2020/07/27 Javascript
[49:29]LGD vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
Python中用于检查英文字母大写的isupper()方法
2015/05/19 Python
python监控linux内存并写入mongodb(推荐)
2017/09/11 Python
python调用百度语音REST API
2018/08/30 Python
Windows下安装Scrapy
2018/10/17 Python
Python Numpy计算各类距离的方法
2019/07/05 Python
Mytheresa英国官网:拥有160多个奢侈品品牌
2016/10/09 全球购物
澳大利亚手表品牌:Time IV Change
2018/10/06 全球购物
乌克兰在线电子产品商店:MTA
2019/11/14 全球购物
一分钟演讲稿
2014/04/30 职场文书
清洁工岗位职责
2015/02/13 职场文书
导游词格式
2015/02/13 职场文书
2015年财务人员工作总结
2015/04/10 职场文书
中秋节作文(五年级)之关于月亮
2019/09/11 职场文书
javascript数组includes、reduce的基本使用
2021/07/02 Javascript
OpenCV实现常见的四种图像几何变换
2022/04/01 Python