如何分离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 ElementTree 基本读操作示例
Apr 09 Python
零基础写python爬虫之爬虫编写全记录
Nov 06 Python
Python类属性与实例属性用法分析
May 09 Python
Python实现SMTP发送邮件详细教程
Mar 02 Python
python中partial()基础用法说明
Dec 30 Python
Python字典循环添加一键多值的用法实例
Jan 20 Python
Windows 安装 Anaconda3+PyCharm的方法步骤
Jun 13 Python
基于Django统计博客文章阅读量
Oct 29 Python
django formset实现数据表的批量操作的示例代码
Dec 06 Python
python tkinter 设置窗口大小不可缩放实例
Mar 04 Python
使用tensorflow框架在Colab上跑通猫狗识别代码
Apr 26 Python
python中的被动信息搜集
Apr 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下的权限算法的实现
2007/04/28 PHP
一家之言的经验之谈php+mysql扎实个人基本功
2008/03/27 PHP
php对gzip文件或者字符串解压实例参考
2008/07/25 PHP
PHP中的函数嵌套层数限制分析
2011/06/13 PHP
php获取qq用户昵称和在线状态(实例分析)
2013/10/27 PHP
PHP中数据库单例模式的实现代码分享
2014/08/21 PHP
PHP函数extension_loaded()用法实例
2015/01/19 PHP
Thinkphp框架中D方法与M方法的区别
2016/12/23 PHP
jquery 插件学习(四)
2012/08/06 Javascript
window.onload追加函数使用示例
2014/03/03 Javascript
JS将滑动门改为选项卡(需鼠标点击)的实现方法
2015/09/27 Javascript
jQuery取得iframe中元素的常用方法详解
2016/01/14 Javascript
微信小程序 欢迎页面的制作(源码下载)
2017/01/09 Javascript
Vue2.x和Vue3.x的双向绑定原理详解
2020/11/05 Javascript
[45:59]完美世界DOTA2联赛PWL S2 FTD vs GXR 第二场 11.22
2020/11/24 DOTA
python获得两个数组交集、并集、差集的方法
2015/03/27 Python
pandas.DataFrame选取/排除特定行的方法
2018/07/03 Python
在python中安装basemap的教程
2018/09/20 Python
python  Django中的apps.py的目的是什么
2018/10/15 Python
Pycharm保存不能自动同步到远程服务器的解决方法
2019/06/27 Python
python GUI库图形界面开发之PyQt5日期时间控件QDateTimeEdit详细使用方法与实例
2020/02/27 Python
python 通过文件夹导入包的操作
2020/06/01 Python
美国知名保健品网站:LuckyVitamin(支持中文)
2017/08/09 全球购物
Sixt美国租车:高端豪华车型自驾体验
2017/09/02 全球购物
英国综合网上购物商城:The Hut
2018/07/03 全球购物
国际领先的在线时尚服装和配饰店:DressLily
2019/03/03 全球购物
俄罗斯茶和咖啡网上商店:Tea.ru
2021/01/26 全球购物
中年人生感言
2014/02/04 职场文书
带病坚持工作事迹
2014/05/03 职场文书
代领毕业证委托书
2014/08/02 职场文书
银行授权委托书格式
2014/10/10 职场文书
继承权公证书范本
2015/01/23 职场文书
满月酒邀请函
2015/01/30 职场文书
英语通知范文
2015/04/22 职场文书
电影建国大业观后感
2015/06/01 职场文书
Python+Appium新手教程
2021/04/17 Python