最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

django 配置阿里云OSS存儲(chǔ)media文件的例子

 更新時(shí)間:2019年08月20日 14:49:28   作者:一只小coder  
今天小編就為大家分享一篇django 配置阿里云OSS存儲(chǔ)media文件的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧

1. 安裝django-aliyun-oss2-storage包

linux上用 pip install django-aliyun-oss2-storage 無報(bào)錯(cuò),順利安裝

windows上報(bào)錯(cuò):

(python3_sbs) F:\projects\virtualenv\python3_sbs\Scripts>pip install django-aliyun-oss2-storage
Collecting django-aliyun-oss2-storage
 Using cached django-aliyun-oss2-storage-0.1.5.tar.gz
 Complete output from command python setup.py egg_info:
 Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "C:\Users\super\AppData\Local\Temp\pip-build-pb4u0qtw\django-aliyun-oss2-storage\setup.py", line 5, in <module>
  README = readme.read()
 UnicodeDecodeError: 'gbk' codec can't decode byte 0x91 in position 63: illegal multibyte sequence
 
 ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in C:\Users\super\AppData\Local\Temp\pip-build-pb4u0qtw\django-aliyun-oss2-storage\

解決方法:

1. 下載源碼 django-aliyun-oss2-storage-0.1.5.tar.gz 地址: https://github.com/xiewenya/django-aliyun-oss2-storage

2. 解壓進(jìn)入解壓后的文件夾

3. 打開README.md 刪除所有內(nèi)容

4. 安裝

python setup.py install

2. 設(shè)置setting.py

 ACCESS_KEY_ID = "xxxx"
 ACCESS_KEY_SECRET = "xxxx"
 END_POINT = "oss-cn-beijing.aliyuncs.com"
 PREFIX_URL = 'http://'
 BUCKET_NAME = "xxx"
 ALIYUN_OSS_CNAME = "" # 自定義域名,如果不需要可以不填寫
 BUCKET_ACL_TYPE = "public-read" # private, public-read, public-read-write
 DEFAULT_FILE_STORAGE = 'aliyun_oss2_storage.backends.AliyunMediaStorage'
 MEDIA_URL = '/media/'
 MEDIA_ROOT = "media"

順便提一下,當(dāng)在xadmin后臺(tái)上傳文件, filename的時(shí)候,文件會(huì)上傳到路徑

PREFIX_URL + BUCKET_NAME+"."END_POINT+MEDIA_URL+filename

但是在django 模板渲染html的時(shí)候,我們?nèi)ilename是按照格式:

<img src="{{ MEDIA_URL }}{{ object.image }}"

前端html render出來后,其實(shí)看到的路徑是:

<img src="/media/image/2017/12/timg.jpg"

根本取不到阿里云服務(wù)器上的文件。所以需要設(shè)置個(gè)新的變量,如 ALI_MEDIA_URL在模板渲染的時(shí)候替換MEDIA_URL.

方法:

1. 創(chuàng)建新文件my_processor.py

from __future__ import unicode_literals
 
import itertools
 
from django.conf import settings
from django.middleware.csrf import get_token
from django.utils.encoding import force_text
from django.utils.functional import SimpleLazyObject, lazy
 
def ali_media(request):
 """
 Adds media-related context variables to the context.
 """
 return {'ALI_MEDIA_URL': settings.ALI_MEDIA_URL}

2. setting.py中

ALI_MEDIA_URL = PREFIX_URL + BUCKET_NAME + "." + END_POINT + '/media/'
 
TEMPLATES = [
 {
  'BACKEND': 'django.template.backends.django.DjangoTemplates',
  'DIRS': [os.path.join(BASE_DIR, 'templates')],
  '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',
    'django.template.context_processors.media',
    'utils.sbs_processor.ali_media',
   ],
  },
 },
]

3. 在模板中設(shè)置為:

<img src="{{ ALI_MEDIA_URL }}{{ object.image }}" 

3. 設(shè)置uediitor

在DjangoUeditor/view.py中

之前存儲(chǔ)到本地的代碼是:

# 保存上傳的文件
def save_upload_file(PostFile, FilePath):
 try:
  f = open(FilePath, 'wb')
  for chunk in PostFile.chunks():
   f.write(chunk)
 except Exception as e:
  f.close()
  return u"寫入文件錯(cuò)誤:%s" % e
 f.close()
 return u"SUCCESS"

我們模仿這個(gè)寫一個(gè)上傳到阿里云:

#保存上傳文件到aliyun
def save_upload_file_to_aliyun(PostFile, Outputfile):
 access_key = ACCESS_KEY_ID
 secret_key = ACCESS_KEY_SECRET
 bucket_name = BUCKET_NAME
 try:
  import oss2
  auth = oss2.Auth(access_key, secret_key)
  bucket = oss2.Bucket(auth, END_POINT, bucket_name)
  # ret, info = put_file(token, key, upload_file)
  result=bucket.put_object(Outputfile, PostFile)
  return u"SUCCESS"
  # if ret.get('key',None) == None:
  #  raise Exception('upload error')
  # else:
  #  return u"SUCCESS"
 except Exception as e:
  print(str(e))
  return str(e)

在哪調(diào)用呢? 找到:

state = save_upload_file(file, os.path.join(OutputPath, OutputFile))

替換成:

state = save_upload_file_to_aliyun(file, OutputPathFormat)

配置結(jié)束。ueditor和xadmin上傳的圖片都會(huì)上傳到阿里云oss中

以上這篇django 配置阿里云OSS存儲(chǔ)media文件的例子就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python實(shí)現(xiàn)快速計(jì)算24點(diǎn)游戲的示例代碼

    Python實(shí)現(xiàn)快速計(jì)算24點(diǎn)游戲的示例代碼

    這篇文章主要為大家詳細(xì)介紹了Python如何實(shí)現(xiàn)快速計(jì)算24點(diǎn)游戲并獲取表達(dá)式,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2022-12-12
  • Python圖像處理PIL各模塊詳細(xì)介紹(推薦)

    Python圖像處理PIL各模塊詳細(xì)介紹(推薦)

    這篇文章主要介紹了Python圖像處理PIL各模塊詳細(xì)介紹,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • Python實(shí)現(xiàn)簡單字典樹的方法

    Python實(shí)現(xiàn)簡單字典樹的方法

    這篇文章主要介紹了Python實(shí)現(xiàn)簡單字典樹的方法,實(shí)例分析了Python字典樹的定義、實(shí)現(xiàn)與使用技巧,需要的朋友可以參考下
    2016-04-04
  • Python numpy.power()函數(shù)使用說明

    Python numpy.power()函數(shù)使用說明

    這篇文章主要介紹了Python numpy.power()函數(shù)使用說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • Python timeit模塊的使用實(shí)踐

    Python timeit模塊的使用實(shí)踐

    timeit 模塊是 Python 標(biāo)準(zhǔn)庫中的模塊,無需安裝,直接導(dǎo)入就可以使用。這篇文章主要介紹了Python timeit模塊的使用,需要的朋友可以參考下
    2020-01-01
  • matplotlib設(shè)置顏色、標(biāo)記、線條,讓你的圖像更加豐富(推薦)

    matplotlib設(shè)置顏色、標(biāo)記、線條,讓你的圖像更加豐富(推薦)

    這篇文章主要介紹了matplotlib設(shè)置顏色、標(biāo)記、線條,讓你的圖像更加豐富,本文通過實(shí)例圖文相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-09-09
  • Python爬取城市租房信息實(shí)戰(zhàn)分享

    Python爬取城市租房信息實(shí)戰(zhàn)分享

    這篇文章主要介紹了Python爬取城市房租房信息實(shí)戰(zhàn)分享,先單線程爬蟲,測試可以成功爬取之后再優(yōu)化為多線程,最后存入數(shù)據(jù)庫,需要的小伙伴可以參考一下的相關(guān)資料
    2022-04-04
  • Python實(shí)現(xiàn)的搖骰子猜大小功能小游戲示例

    Python實(shí)現(xiàn)的搖骰子猜大小功能小游戲示例

    這篇文章主要介紹了Python實(shí)現(xiàn)的搖骰子猜大小功能小游戲,涉及Python隨機(jī)數(shù)運(yùn)算與數(shù)值判斷相關(guān)操作技巧,需要的朋友可以參考下
    2017-12-12
  • Python基礎(chǔ)詳解之郵件處理

    Python基礎(chǔ)詳解之郵件處理

    這篇文章主要介紹了Python基礎(chǔ)詳解之郵件處理,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)python基礎(chǔ)的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • 詳談python3 numpy-loadtxt的編碼問題

    詳談python3 numpy-loadtxt的編碼問題

    下面小編就為大家分享一篇詳談python3 numpy-loadtxt的編碼問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04

最新評(píng)論

汉寿县| 桂阳县| 锡林郭勒盟| 竹山县| 万宁市| 宿松县| 丰宁| 庄浪县| 华坪县| 泗洪县| 安龙县| 七台河市| 澄城县| 赣州市| 府谷县| 青田县| 宣城市| 建平县| 巴林左旗| 河南省| 马关县| 岳池县| 丰顺县| 依兰县| 新竹市| 渭源县| 元阳县| 莱西市| 军事| 梨树县| 都匀市| 淮阳县| 清流县| 江华| 津市市| 克山县| 通渭县| 建平县| 会同县| 榕江县| 深水埗区|