如何分离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 深入理解yield
Sep 06 Python
Python字符串切片操作知识详解
Mar 28 Python
python图片验证码生成代码
Jul 02 Python
基于循环神经网络(RNN)的古诗生成器
Mar 26 Python
基于python OpenCV实现动态人脸检测
May 25 Python
解决pycharm py文件运行后停止按钮变成了灰色的问题
Nov 29 Python
python实现QQ邮箱/163邮箱的邮件发送
Jan 22 Python
python写入文件自动换行问题的方法
Jul 05 Python
解决Django提交表单报错:CSRF token missing or incorrect的问题
Mar 13 Python
详解Python IO口多路复用
Jun 17 Python
详解python命令提示符窗口下如何运行python脚本
Sep 11 Python
scrapy中如何设置应用cookies的方法(3种)
Sep 22 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安装为Apache DSO
2006/10/09 PHP
PHP学习之PHP表达式
2006/10/09 PHP
PHP代码保护--Zend Guard的使用详解
2013/06/03 PHP
原生JS实现Ajax通过POST方式与PHP进行交互的方法示例
2018/05/12 PHP
Laravel5.1框架路由分组用法实例分析
2020/01/04 PHP
jquery插件制作 自增长输入框实现代码
2012/08/17 jQuery
Jquery getJSON方法详细分析
2013/12/26 Javascript
jQuery打印图片pdf、txt示例代码
2014/07/22 Javascript
JS运动框架之分享侧边栏动画实例
2015/03/03 Javascript
js控制文本框只输入数字和小数点的方法
2015/03/10 Javascript
JavaScript基础教程——入门必看篇
2016/05/20 Javascript
详谈jQuery Ajax(load,post,get,ajax)的用法
2017/03/02 Javascript
详解JS中的柯里化(currying)
2017/08/17 Javascript
限时抢购-倒计时的完整实例(分享)
2017/09/17 Javascript
ES6 Promise对象的应用实例分析
2019/06/27 Javascript
js实现课堂随机点名系统
2019/11/21 Javascript
javascript实现前端分页效果
2020/06/24 Javascript
jQuery实现鼠标拖动图片功能
2021/03/04 jQuery
[48:23]DOTA2上海特级锦标赛主赛事日 - 4 败者组第四轮#1COL VS EG第一局
2016/03/05 DOTA
[49:27]2018DOTA2亚洲邀请赛 4.4 淘汰赛 TNC vs VG 第一场
2018/04/05 DOTA
Python3.2中的字符串函数学习总结
2015/04/23 Python
Java Web开发过程中登陆模块的验证码的实现方式总结
2016/05/25 Python
Python实现的多线程http压力测试代码
2017/02/08 Python
python 换位密码算法的实例详解
2017/07/19 Python
对python多线程中Lock()与RLock()锁详解
2019/01/11 Python
python pyinstaller 加载ui路径方法
2019/06/10 Python
对python tkinter窗口弹出置顶的方法详解
2019/06/14 Python
节日快乐! Python画一棵圣诞树送给你
2019/12/24 Python
Django之form组件自动校验数据实现
2020/01/14 Python
Python基础之字符串常见操作经典实例详解
2020/02/26 Python
兰蔻加拿大官方网站:Lancome加拿大
2016/08/05 全球购物
干部行政关系介绍信
2014/01/17 职场文书
医学求职信
2014/05/28 职场文书
校长四风对照检查材料
2014/09/27 职场文书
红色电影观后感
2015/06/18 职场文书
python引入其他文件夹下的py文件具体方法
2021/05/23 Python