如何分离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实现的使用telnet登陆聊天室实例
Jun 17 Python
一张图带我们入门Python基础教程
Feb 05 Python
python中日志logging模块的性能及多进程详解
Jul 18 Python
Django 路由控制的实现代码
Nov 08 Python
python实现月食效果实例代码
Jun 18 Python
Python简单处理坐标排序问题示例
Jul 11 Python
PowerBI和Python关于数据分析的对比
Jul 11 Python
python写入数据到csv或xlsx文件的3种方法
Aug 23 Python
python根据文本生成词云图代码实例
Nov 15 Python
python飞机大战pygame游戏之敌机出场实现方法详解
Dec 17 Python
解决pycharm每次打开项目都需要配置解释器和安装库问题
Feb 26 Python
Pygame Event事件模块的详细示例
Nov 17 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作为网站开发语言的原因分享
2012/01/03 PHP
有关phpmailer的详细介绍及使用方法
2013/01/28 PHP
php实现最简单的MVC框架实例教程
2014/09/08 PHP
PHP实现PDO操作mysql存储过程示例
2019/02/13 PHP
Codeigniter里的无刷新上传的实现代码
2019/04/14 PHP
PHP工厂模式、单例模式与注册树模式实例详解
2019/06/03 PHP
Jquery刷新页面背景图片随机变换的实现方法
2013/03/15 Javascript
Jquery通过Ajax方式来提交Form表单的具体实现
2013/11/07 Javascript
jQuery实现table隔行换色和鼠标经过变色的两种方法
2014/06/15 Javascript
JS组件Bootstrap导航条使用方法详解
2016/04/29 Javascript
JavaScript基础知识点归纳(推荐)
2016/07/09 Javascript
Angular5中提取公共组件之radio list的实例代码
2018/07/10 Javascript
vue实现select下拉显示隐藏功能
2019/09/30 Javascript
js实现图片粘贴到网页
2019/12/06 Javascript
详解三种方式在React中解决绑定this的作用域问题并传参
2020/08/18 Javascript
对python使用http、https代理的实例讲解
2018/05/07 Python
在cmd中运行.py文件: python的操作步骤
2018/05/12 Python
pycharm 配置远程解释器的方法
2018/10/28 Python
Python3.4解释器用法简单示例
2019/03/22 Python
python 创建一维的0向量实例
2019/12/02 Python
python中设置超时跳过,超时退出的方式
2019/12/13 Python
python 项目目录结构设置
2020/02/14 Python
python多维数组分位数的求取方式
2020/03/03 Python
Python 必须了解的5种高级特征
2020/09/10 Python
马来西亚航空官方网站:Malaysia Airlines
2017/07/28 全球购物
中英文求职信范文
2014/01/27 职场文书
会计专业毕业自荐书范文
2014/02/08 职场文书
信息专业学生学习的自我评价
2014/02/17 职场文书
信息合作协议书
2014/10/09 职场文书
店铺转让协议书
2014/12/02 职场文书
2014年电教工作总结
2014/12/19 职场文书
学雷锋团日活动总结
2015/05/06 职场文书
公司费用报销管理制度
2015/08/04 职场文书
Spring Data JPA框架持久化存储数据到数据库
2022/04/28 Java/Android
高通2023 年将发布高性能PC处理器
2022/04/29 数码科技
微前端qiankun改造日渐庞大的项目教程
2022/06/21 Javascript