Python 如何在django tastypie上上传带有POST请求的文件?

Python 如何在django tastypie上上传带有POST请求的文件?,python,django,tastypie,Python,Django,Tastypie,可能重复: 我现在确实像这样向我的API提交请求 curl --dump-header - -H "Content-Type: application/json" -X POST --data '{"username":"theusername", "api_key":"anapikey", "video_title":"a title", "video_description":"the description"}' http://localhost:8000/api/v1/video/

可能重复:

我现在确实像这样向我的API提交请求

curl --dump-header - -H "Content-Type: application/json" -X POST --data '{"username":"theusername", "api_key":"anapikey", "video_title":"a title", "video_description":"the description"}' http://localhost:8000/api/v1/video/ 
但现在我需要能够添加一个视频文件到上传。我已经找了几个小时关于用Tastypie上传文件的事情,但我没有得到一个可靠的答复。我需要添加Base64编码吗?如果是,怎么做?通过POST请求上传文件后,如何访问该文件?只是普通的request.FILES操作?我不想将文件保存到数据库,只想获取文件的路径

#Models.py
class Video(models.Model):
    video_uploader = models.ForeignKey(User)
    video_path = models.CharField(max_length=128)
    video_views = models.IntegerField(default=0)
    upload_date = models.DateTimeField(auto_now_add=True)
    video_description = models.CharField(max_length=860)
    video_title = models.SlugField()

我完全搞不清楚如何实现一个文件上传系统的Tastypie,所以任何帮助将非常感谢。谢谢

这里是通过
MultiPart
通过
django-tastype
上传文件的方法

型号.py

class Video(models.Model):
    video_uploader = models.ForeignKey(User)
    video = models.FileField(_('Video'), upload_to='path_to_folder/') # save file to server
    video_views = models.IntegerField(default=0)
    upload_date = models.DateTimeField(auto_now_add=True)
    video_description = models.CharField(max_length=860)
    video_title = models.SlugField()
class MultipartResource(object):
    def deserialize(self, request, data, format=None):
        if not format:
            format = request.META.get('CONTENT_TYPE', 'application/json')
        if format == 'application/x-www-form-urlencoded':
            return request.POST
        if format.startswith('multipart'):
            data = request.POST.copy()
            data.update(request.FILES)
            return data
        return super(MultipartResource, self).deserialize(request, data, format)

class VideoResource(MultipartResource, ModelResource):
   """
   Inherit this Resource class to `MultipartResource` Class
   """
   # Assuming you know what to write here 
   ...
Api.py

class Video(models.Model):
    video_uploader = models.ForeignKey(User)
    video = models.FileField(_('Video'), upload_to='path_to_folder/') # save file to server
    video_views = models.IntegerField(default=0)
    upload_date = models.DateTimeField(auto_now_add=True)
    video_description = models.CharField(max_length=860)
    video_title = models.SlugField()
class MultipartResource(object):
    def deserialize(self, request, data, format=None):
        if not format:
            format = request.META.get('CONTENT_TYPE', 'application/json')
        if format == 'application/x-www-form-urlencoded':
            return request.POST
        if format.startswith('multipart'):
            data = request.POST.copy()
            data.update(request.FILES)
            return data
        return super(MultipartResource, self).deserialize(request, data, format)

class VideoResource(MultipartResource, ModelResource):
   """
   Inherit this Resource class to `MultipartResource` Class
   """
   # Assuming you know what to write here 
   ...
然后通过
CURL

curl -H "Authorization: ApiKey username:api_key" -F "video=/path_to_video/video.mp3" -F "video_title=video title" http://localhost:8000/api/v1/video/ -v