2

저는 장고를 처음 사용하고 FileField가 포함 된 기본 모델을 설계했습니다. 여기 API를 통한 장고 파일 업로드

내 모델의 예입니다 : 내가 관리자를 통해 파일 업로드를 테스트 한

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

,하지만 지금은 REST API를 통해 파일을 제출하는 다른 솔루션을 찾고 있어요. 필자의 첫 번째 검색 결과는 Piston으로 이어지지 만 대부분의 예제는 모델을 포함하지 않는 것으로 보이며 웹 사이트에만 파일을 업로드합니다.

내 목표는 os.walk와 같은 디렉토리를 구문 분석하고 파일을 제출하고 파일 정보로 모델을 채우는 것입니다.

그건 제가 조사를 시작하기 위해 제안과 단서를 찾고 있다고 말했습니다.

미리 감사드립니다.

답변

8

새로운 빌드를 위해 피스톤을 더 이상 보지 않아야합니다. 그것은 본질적으로 유지 보수가되지 않으며 잠시 동안 머물러 있습니다. django-tastypie와 django-rest-framework는 최선의 선택이지만, 덜 완벽한 기능을 갖춘 프레임 워크가 있습니다.

REST 프레임 워크는 내가 파일 업로드에 대한 tastypie의 지원에 대한 확실하지 않다 http://django-rest-framework.org/api-guide/fields.html#filefield

참조 표준 양식 인코딩 된 파일 업로드를 지원합니다.

+0

귀하의 의견에 감사드립니다. Tom, 나는 Piston의 다른 대안에 대한 귀하의 제안을 고려할 것입니다. 내 문제에 관해서는 기본으로 돌아가고 django가있는 동일한 서버에서 업로드가 이루어지기 때문에 파일 및 샘플 모델을 호출하는 간단한 스크립트를 만들었습니다. 내 게시물에서 자세히 설명하겠습니다. – karamazov

+1

tastypie에서 django-rest-framework로 swithced 한 가장 큰 이유 중 하나는 파일 업로드의 용이성입니다 ... –

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() 

이 놀라 울 정도로 간단했다 돌이켜 보면,하지만 난 그게 같은 문제를 가진 사람을 도울 수 있기를 바랍니다.

언제든지 댓글을 달 수 있습니다. 감사합니다.