У меня есть Django rest api, в который вы можете загрузить файл и идентификатор: Снимок экрана
Я хочу вызвать функцию, когда нажата кнопка отправки, чтобы сделать что-то сзагруженный файл.Как я могу сделать это на платформе отдыха django?
models.py
from django.db import models
from .validators import validate_file_extension
class Uplist(models.Model):
report_id = models.CharField(max_length=200, primary_key= True)
application = models.FileField(blank=False, null=False, validators=[validate_file_extension])
serializers.py
from rest_framework import serializers
from api import models
class UplistSerializer(serializers.ModelSerializer):
class Meta:
model = models.Uplist
fields = ('application', 'report_id',)
urls.py
from django.urls import path
from django.conf.urls import url
from . import views
urlpatterns = [
path('', views.ListUps.as_view()),
url(r'^$', views.ListUps.as_view()),
url(r'^(?P<pk>[0-9]+)/$', views.ListDetails.as_view()),
]
views.py
from rest_framework import generics
from rest_framework.parsers import MultiPartParser, FormParser
from api import models
from . import serializers
class ListUps(generics.ListCreateAPIView):
parser_classes = (MultiPartParser, FormParser)
queryset = models.Uplist.objects.all()
serializer_class = serializers.UplistSerializer
class ListDetails(generics.RetrieveUpdateDestroyAPIView):
queryset = models.Uplist.objects.all()
serializer_class = serializers.UplistSerializer
validators.py
def validate_file_extension(value):
import os
from django.core.exceptions import ValidationError
ext = os.path.splitext(value.name)[1] # [0] returns path+filename
valid_extensions = ['.csv']
if not ext.lower() in valid_extensions:
raise ValidationError(u'Unsupported file extension.')