如何分离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操作json数据的一个简单例子
Apr 17 Python
python登陆asp网站页面的实现代码
Jan 14 Python
python检测远程端口是否打开的方法
Mar 14 Python
简单介绍Python的Tornado框架中的协程异步实现原理
Apr 23 Python
在Python中操作文件之read()方法的使用教程
May 24 Python
Python基于更相减损术实现求解最大公约数的方法
Apr 04 Python
Python 实现字符串中指定位置插入一个字符
May 02 Python
在Python中将函数作为另一个函数的参数传入并调用的方法
Jan 22 Python
深度辨析Python的eval()与exec()的方法
Mar 26 Python
python二进制文件的转译详解
Jul 03 Python
python中逻辑与或(and、or)和按位与或异或(&amp;、|、^)区别
Aug 05 Python
Python 代码调试技巧示例代码
Aug 11 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
PHP数据库操作面向对象的优点
2006/10/09 PHP
php 什么是PEAR?(第二篇)
2009/03/19 PHP
PHP清除数组中所有字符串两端空格的方法
2014/10/20 PHP
php同时使用session和cookie来保存用户登录信息的实现代码
2016/05/13 PHP
thinkPHP实现签到功能的方法
2017/03/15 PHP
php实现的二叉树遍历算法示例
2017/06/15 PHP
TP5多入口设置实例讲解
2020/12/15 PHP
extjs 学习笔记(二) Ext.Element类
2009/10/13 Javascript
用JavaScript实现动画效果的方法
2013/07/20 Javascript
各种常用的JS函数整理
2013/10/25 Javascript
jquery scroll()区分横向纵向滚动条的方法
2014/04/04 Javascript
jquery实现select选中行、列合计示例
2014/04/25 Javascript
jQuery中innerHeight()方法用法实例
2015/01/19 Javascript
仅30行代码实现Javascript中的MVC
2016/02/15 Javascript
基于jQuery实现仿51job城市选择功能实例代码
2016/03/02 Javascript
JavaScript操作HTML DOM节点的基础教程
2016/03/11 Javascript
js调用webservice构造SOAP进行身份验证
2016/04/27 Javascript
Jquery跨域获得Json的简单实例
2016/05/18 Javascript
20分钟打造属于你的Bootstrap站点
2016/07/27 Javascript
vue axios同步请求解决方案
2017/09/29 Javascript
VueJS 组件参数名命名与组件属性转化问题
2018/12/03 Javascript
在vue中使用vuex,修改state的值示例
2019/11/08 Javascript
jquery实现图片无缝滚动 蒙版遮蔽效果
2020/01/11 jQuery
Postman参数化实现过程及原理解析
2020/08/13 Javascript
用Python编写脚本使IE实现代理上网的教程
2015/04/23 Python
vscode 远程调试python的方法
2017/12/01 Python
python看某个模块的版本方法
2018/10/16 Python
python模拟登陆,用session维持回话的实例
2018/12/27 Python
Python timeit模块的使用实践
2020/01/13 Python
使用Bazel编译TensorBoard教程
2020/02/15 Python
导出HTML5 Canvas图片并上传服务器功能
2019/08/16 HTML / CSS
怎样自定义一个异常类
2016/09/27 面试题
测绘工程系学生的自我评价
2013/11/30 职场文书
python-opencv 中值滤波{cv2.medianBlur(src, ksize)}的用法
2021/06/05 Python
python通过opencv调用摄像头操作实例分析
2021/06/07 Python
Vue组件化(ref,props, mixin,.插件)详解
2022/05/15 Vue.js