如何分离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中设置变量作为默认值时容易遇到的错误
Apr 03 Python
Python根据区号生成手机号码的方法
Jul 08 Python
Python的IDEL增加清屏功能实例
Jun 19 Python
Python多线程threading和multiprocessing模块实例解析
Jan 29 Python
火车票抢票python代码公开揭秘!
Mar 08 Python
利用Python代码实现数据可视化的5种方法详解
Mar 25 Python
Python 中 function(#) (X)格式 和 (#)在Python3.*中的注意事项
Nov 30 Python
python使用SQLAlchemy操作MySQL
Jan 02 Python
Python图像处理库PIL的ImageEnhance模块使用介绍
Feb 26 Python
python如何实时获取tcpdump输出
Sep 16 Python
Django如何实现防止XSS攻击
Oct 13 Python
python查询MySQL将数据写入Excel
Oct 29 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编写的抽奖程序中奖概率算法
2015/05/14 PHP
php格式化json函数示例代码
2016/05/12 PHP
thinkphp3.2.0 setInc方法 源码全面解析
2018/01/29 PHP
Prototype源码浅析 Enumerable部分(二)
2012/01/18 Javascript
php对mongodb的扩展(小试牛刀)
2012/11/11 Javascript
javascript数组去重3种方法的性能测试与比较
2013/03/26 Javascript
Javascript仿PHP $_GET获取URL中的参数
2014/05/12 Javascript
JavaScript对Cookie进行读写操作实例
2015/07/25 Javascript
轻松学习jQuery插件EasyUI EasyUI实现树形网络基本操作(2)
2015/11/30 Javascript
JS插件overlib用法实例详解
2015/12/26 Javascript
使用jQuery Mobile框架开发移动端Web App的入门教程
2016/05/17 Javascript
bootstrap输入框组代码分享
2016/06/07 Javascript
分享一个原生的JavaScript拖动方法
2016/09/25 Javascript
详解js界面跳转与值传递
2016/11/22 Javascript
node.js利用redis数据库缓存数据的方法
2017/03/01 Javascript
js中的reduce()函数讲解
2019/01/18 Javascript
详解element-ui日期时间选择器的日期格式化问题
2019/04/08 Javascript
vue项目中使用fetch的实现方法
2019/04/25 Javascript
[05:31]DOTA2英雄梦之声_第04期_光之守卫
2014/06/23 DOTA
[06:53]DOTA2每周TOP10 精彩击杀集锦vol.3
2014/06/25 DOTA
[02:19]DOTA2上海特级锦标赛 观赛指南 Spectator Guide
2016/02/04 DOTA
[50:48]LGD vs CHAOS 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
在Python的Django框架中为代码添加注释的方法
2015/07/16 Python
pymongo中group by的操作方法教程
2019/03/22 Python
Python语言进阶知识点总结
2019/05/28 Python
python正则表达式匹配IP代码实例
2019/12/28 Python
pandas和spark dataframe互相转换实例详解
2020/02/18 Python
基于python实现百度语音识别和图灵对话
2020/11/02 Python
Python基于template实现字符串替换
2020/11/27 Python
Python爬虫之Selenium实现键盘事件
2020/12/04 Python
python使用scapy模块实现ARP扫描的过程
2021/01/21 Python
在网上学习全世界最好的课程:Coursera
2017/11/07 全球购物
校园门卫岗位职责
2013/12/09 职场文书
食品卫生管理制度
2015/08/06 职场文书
创业计划书之废品回收
2019/09/26 职场文书
HTML中link标签属性的具体用法
2023/05/07 HTML / CSS