ファイルストレージのAPIます。https://yiyibooks.cn/xx/django_182/ref/files/storage.html
カスタムのストレージシステムを書き込みます。https://yiyibooks.cn/xx/django_182/howto/custom-file-storage.html
カスタムクラスの定義を格納するステップ
1.カスタムストレージクラスでなければなりませんdjango.core.files.storage.Storageのサブクラス
2. パラメータなしDjangoはストレージ・クラスをインスタンス化することができなければなりません。これは、すべての設定からでなければならないことを意味しdjango.conf.settingsで取得します。
3.お使いのストレージ・クラスは、_open実装()と()メソッドだけでなく、あなたのクラスを格納するための任意の他の適切な方法を_save必要があります。
4. お使いのストレージ・クラスが破壊されなければならないので、それは、移行の分野で使用されたときにシリアライズすることができます。あなたのフィールドは、あなたがそれを使用できるパラメータの独自の配列を有することができている限りdjango.utils.deconstruct.deconstructible(また、DjangoのFileSystemStorageのものに使用されている)クラスのデコレータを。
カスタムストレージクラス
ツールキットutilsの/ FDFSパッケージを作成します。
袋をFDFSするクライアント構成ファイルをコピーしますclient.conf
構成ファイルを変更Client.conf
#ストアファイルのログログファイルへのベースパスではディレクトリ持っている必要があります = /ホーム/パイソン/ bj18 / TTSX / dailyfresh / BASE_PATH ログ #のtracker_serverもう一度最後OCUR内のCANを、そしてtracker_server形式は # 「ホスト:ポート」、ホストホスト名またはIPアドレスを指定することができます tracker_server = 192.168.137.130:22122
私たちは、ディレクトリ/ home /パイソン/ bj18 / ttsx / dailyfresh / logにログファイルを作成する必要があります
settings.py設定ファイルのパス
#のセットファイルストレージジャンゴ DEFAULT_FILE_STORAGE = 「utils.fdfs.storage.FDFSStorage 」 #のセットFDFS使用client.confパス FDFS_CLIENT_CONF = 「./utils/fdfs/client.conf 」 #nginxのは、ストレージサーバポートとIPで提供FDFS特許 FDFS_URL = ' 192.168.137.130:8888 '
初期クラスFDFSStorageのFDFS / storage.py中でのインポート構成の設定
django.core.files.storage インポートストレージ #のインポートストレージツール から fdfs_client.client インポート Fdfs_client #のアップロードクラスのクライアント から django.conf のインポート設定 #の輸入ジャンゴ・コンフィギュレーション・ クラス FDFSStorage(ストレージ): #はアップロードされたストレージクラスを継承するクラスを作成します。 '' ' FAST DFSファイルストレージクラスを''' DEF __init__(セルフ、client_conf =なし、BASE_URL = なし)を: IF client_confはありませんなし: self.client_conf = settings.FDFS_CLIENT_CONF IFBASE_URLはありません:なし self.base_url = settings.FDFS_URL DEF _open(セルフ、名前、MODE = ' RB '): #は、メソッドを持っている必要があります '' ' ファイルを開くときに使用' '' パス DEFの _save(セルフ、名前、コンテンツ): #はの方法を持っている必要があります 「」「ファイルを格納する際に使用される「」」 #の名前は、ファイルのアップロードする:名前は #1 引数は、すなわち、例えば、django.core.files.Fileまたはファイルのサブカテゴリーである必要があります:コンテンツが含まれていますあなたは、ファイルのクラスオブジェクトの内容アップロード #を作成Fdfd_clientは、オブジェクトの クライアント= Fdfs_client(self.client_conf) #は、DFSシステム高速にファイルをアップロード #をupload_by_buffer()ファイルアップロードの内容 RES = client.upload_by_buffer(content.read()) #は、辞書形式返す #辞書の #{ # 'グループ名':GROUP_NAMEを、 #は remote_file_id、: 'リモートFILE_ID' # 「のステータスを':'。はアップロード」、successed # 'ローカルファイル名を':''、 # 'アップロードサイズ':upload_size、 # [ストレージIP ':storage_ipの #} 印刷(RES) IF res.get(' ステータス')=!' アップロードsuccessed。': #res.getは()の内容の辞書を取得します 。#のアップロードが例外をスロー失敗した 昇給(例外を「FDFSが失敗にファイルをアップロード『) #は、上述のIDファイルを取得 (ファイル名= res.get 』リモートのfile_id " ) #は、上記ID言及したファイルを返し 、戻りファイル名の DEFが EXISTSを(自己、名): #コール_save()の前に最初の呼び出しの意志が存在する()メソッド 「」「Djangoはファイル名かどうかを決定するために使用することができる「」」 を返す偽; #偽表現は、ファイル名の名前ではありませんが使用することができ DEFの URL(自己を、名): #あなたがこのの詳細を示していない場合は、管理URL()が間違っているときに報告されます 「」「ファイルのURLパスを返します「」」 リターン 名前
背景192.168.137.130:8000/adminへ
結果を見るために画像を追加