Django로 Bunny.net에 미디어 파일 저장하기
9813 단어 django
Bunny.net 설정
bunny.net로 이동하여 로그인하십시오. 스토리지 아이콘을 클릭한 다음 스토리지 영역 추가를 클릭합니다. 저장 영역에 이름을 지정하고 필요에 가장 적합한 지리적 위치를 선택하십시오. 이 가이드에서는 뉴욕 위치에 있는 내 영역
myzone
을 호출하겠습니다.생성되면 해당 영역의 파일 관리자로 리디렉션됩니다. 오른쪽 상단의 Connect Pull Zone 버튼을 클릭합니다. 다시 한 번, 이름을 지정하고(저는 영역 이름을 일관되게 유지하는 것을 좋아합니다) CDN 요구 사항에 가장 적합한 옵션을 선택합니다.
장고 설정
우리는 당신이 이미 최소한의 새 django 프로젝트를 만들고 설정했다고 가정합니다.
먼저
settings.py
를 편집하고 몇 가지 새로운 속성을 포함합니다. bunny.net의 저장소에서 FTP 및 API 액세스를 클릭합니다. 페이지에 있는 사용자 이름과 비밀번호를 복사하여 설정에 속성으로 저장합니다.또한 기본 파일 저장소를
BunnyStorage
클래스(아래에서 생성할 것)로 설정하고 미디어 URL을 우리가 생성한 각 풀 존의 것으로 변경했습니다.# Media files
#
DEFAULT_FILE_STORAGE = 'myapp.storage.BunnyStorage'
MEDIA_URL = 'https://myzone.b-cdn.net/myzone/media/'
# Bunny.net CDN Access
#
BUNNY_ZONENAME = 'myzone'
BUNNY_PASSWORD = 'arandom-string-of-numbersand-letters'
2021년 2월 현재 Bunny.net에는 공식 Python API가 없습니다. 그러나 안정적인 라이브러리로 링크NiveditJain's 라이브러리를 수행합니다. 단일 파일이므로 django 프로젝트 폴더(manage.py가 저장된 위치)에 파일을 넣고
wget
사용자 지정 스토리지 모듈에 상대적으로 가져옵니다.cd myproject
wget https://raw.githubusercontent.com/NiveditJain/BunnyCDNStorageLib/master/BunnyCDNStorage.py
중요한!
계속하기 전에
BunnyCDNStorage.py
파일을 편집해야 합니다! upload_file
메서드를 아래와 같이 변경합니다.def upload_file(self,cdn_path,file_name,file_data):
"""
uploads your files to cdn server \n
cdn_path - directory to save in CDN \n
filename - name to save with cdn \n
if none it will look for file in present working directory
"""
if(cdn_path[-1]=='/'):
cdn_path=cdn_path[:-1]
request_url=self.base_url+cdn_path+'/'+file_name
response=requests.request("PUT",request_url,data=file_data,headers=self.headers)
return(response.json())
완료되면 저장소 백엔드를 연결하려는 django 앱으로 디렉터리를 변경하고 새 파일을 만듭니다
storage.py
.djangodocs는 사용자 지정 스토리지 백엔드 작성에 대한 심층 문서를 제공합니다. 따라서 우리가 하는 일에 대해 더 깊이 이해하려면 해당 페이지를 확인해야 합니다.
우리의 스토리지 백엔드는 단일 클래스와 5가지 메소드로 구성됩니다.
myapp/storage.py
에서,from django.conf import settings
from django.core.files.images import ImageFile
from django.core.files.storage import Storage
import BunnyCDNStorage
class BunnyStorage(Storage):
def __init__(self):
self.conn = BunnyCDNStorage.CDNConnector(
settings.BUNNY_PASSWORD,
settings.BUNNY_ZONENAME,
storage_zone_region='ny'
)
def _open(self, name, mode='rb'):
f = self.conn.get_file(name)
return ImageFile(f)
def _save(self, name, content):
self.conn.upload_file('/media/', name, content)
return name
def delete(self, name):
self.conn.remove(name)
def exists(self, name):
try:
self.conn.get_file(name)
except ValueError:
return False
return True
def listdir(self, path):
pass
def size(self, name):
pass
def url(self, name):
return f'https://myzone.b-cdn.net/media/{name}'
그리고 그게 다야! Bunny.net이 공식 Python API를 출시하고 표준 Django 패키지가 출시될 때까지 이것은 현재 우리가 얻은 것 중 최고입니다... 즐거운 코딩!
Reference
이 문제에 관하여(Django로 Bunny.net에 미디어 파일 저장하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/willmeyers/storing-media-files-on-bunny-net-with-django-4jnl텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)