[英]Upload file through django restful api
我已經閱讀了所有的stackoverflow問題和答案以及我找到的每個教程,但我仍然無法使其工作 - 我可能會愚蠢。 我正在嘗試通過curl通過restful api將文件上傳到django。 我的curl命令如下
curl -X POST -H "Content-Type:multipart/form-data" -u alex:password123 -F "docfile=@/Users/Alex/test.txt" http://127.0.0.1:8000/files/
models.py
from django.db import models
class File(models.Model):
title = models.CharField(max_length=100, default='')
docfile = models.FileField(upload_to='file/')
views.py
from rest_framework.parsers import FormParser, MultiPartParser
from models import File
from serializers import FileSerializer
class UploadFile(viewsets.ModelViewSet):
queryset = File.objects.all()
serializer_class = FileSerializer
parser_classes = (MultiPartParser, FormParser,)
def preform_create(self, serializer):
file_obj = self.request.FILES['docfile']
serializer.save(file_obj)
serializers.py
from rest_framework import serializers
from models import File
class FileSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = File
fields = ('docfile','name')
urls.py
from django.conf.urls import url, include
from rest_framework import routers
from quickstart import views
router = routers.DefaultRouter()
router.register(r'files', views.UploadFile)
urlpatterns = [
url(r'^', include(router.urls)),
url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')),
]
我的媒體根源是MEDIA_ROOT = ''
我已經閱讀了大量的文檔,但我真的被困在所有這些如何融合在一起/我缺少什么。 任何幫助表示贊賞。
REST API的一個優點是它帶有大量的類來減少你必須為常見操作編寫的代碼,但是如果你是API的新手並且你將通過curl
上傳文件,那么你應該從更簡單的東西開始:
class UploadFile(views.APIView):
parser_classes = (parsers.FormParser, parsers.MultiPartParser)
def post(self, request):
if len(request.FILES) > 0:
request_file = request.FILES[0]
file = File(docfile=request_file, title='something')
file.save()
else:
# do something
urls.py:
url(r'^files/$', views.UploadFile.as_view(), name='files'),
掌握了API提供的不同視圖后,您可以嘗試使用viewsets.ViewSet
。 我個人更喜歡從views.APIView
擴展我的視圖, views.APIView
代碼有更多的控制權。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.