2

私は django を初めて使用し、FileFields を含むいくつかの基本的なモデルを設計しています。

これが私のモデルの例です:

class Sample(models.Model):
   pub_date   = models.DateTimeField('Publish Date', default=datetime.now)
   upfile     = models.FileField(upload_to='samples/')

管理者経由でファイルのアップロードをテストしましたが、REST API 経由でファイルを送信するための他のソリューションを探しています。私の最初の検索はピストンにつながりますが、ほとんどの例にはモデルが含まれていないようで、Web サイトへのファイルのアップロードのみです。

私の目的は、たとえば os.walk を使用してディレクトリを解析し、ファイルを送信してモデルにファイル情報を入力することです。

とはいえ、調査を開始するために提案と手がかりを探しています。

前もって感謝します!

4

2 に答える 2

8

おそらく、もう新しいビルドを求めてピストンする必要はありません。それは本質的に維持されておらず、しばらくの間維持されていました。django-tastypie と django-rest-framework が最善の策ですが、十分な機能を備えていないフレームワークも多数登場しています。

REST フレームワークは、標準のフォーム エンコード ファイルのアップロードをサポートしています。http://django-rest-framework.org/api-guide/fields.html#filefield を参照してください

ファイルのアップロードに対する Tastypie のサポートについてはよくわかりません。

于 2012-12-05T13:58:22.817 に答える
1

基本に戻って、呼び出しファイルとサンプル モデルを読み取るローカル スクリプトを作成してみることにしました。同じサーバーからファイルを直接送信するため、このソリューションは REST API を使用するよりもはるかにシンプルであり、必要以上の柔軟性を提供します。

これが私の解決策でした:

import os
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
import sys
sys.path.append('/opt/proj')
sys.path.append('/opt/proj/web')
from django import db
from django.core.files import File
from django.utils import timezone
from web.myapp.models import Sample

filesample = File(open(sys.argv[1],'rb'))
filesample.name = os.path.basename(filesample.name)
Sample(upfile=filesample, pub_date=timezone.now()).save()

これを振り返ってみると、信じられないほど簡単でしたが、同じ問題を抱えている人に役立つことを願っています.

お気軽にコメントください。ありがとう!

于 2012-12-05T16:42:26.293 に答える