2017-02-14 3 views
1

Я новичок в Django и делаю небольшой проект, в котором пользователь входит на сайт с Django и может загружать некоторые изображения. Эти снимки должны иметь предварительную обработку, прежде чем они смогут использоваться удаленными службами. То, что я хотел бы сделать, это выполнить предварительную обработку на стороне клиента, и у меня есть код python, который это делает. Тем не менее, я не уверен, как настроить Django, чтобы пользователь мог предоставить ему разрешения для запуска некоторого кода локально (и генерировать некоторые файлы во временном каталоге).Выполнение некоторой обработки локально перед загрузкой

Так, например, один мой взгляд выглядит следующим образом:

class UploadImageView(APIView): 
    permission_classes = (IsAuthenticated,) 
    authentication_classes = (JSONWebTokenAuthentication,) 

    # Create your views here. 
    def post(self, request): 
     image = request.FILES['image'] 
     study = int(request.data.get('study').strip())    

     if image is None: 
      return Response(status=status.HTTP_400_BAD_REQUEST) 

     # Check study ID and Image type exists 
     s = StudyModel.objects.filter(pk=study).first()    
     if s is None: 
      return Response(status=status.HTTP_412_PRECONDITION_FAILED) 
     try: 
      _ = ImageModel.objects.create(path=image, study=s) 
     except: 
      return Response(status=status.HTTP_417_EXPECTATION_FAILED) 

     return Response(status=status.HTTP_200_OK) 

Теперь в настоящее время, пользователь должен запустить код локально вручную для создания этого преобразованного изображения, а затем вызвать REST API, чтобы загрузить его , Было бы хорошо, если пользователь выбирает необработанное изображение, некоторый код преобразует его локально, а затем загружает преобразованное изображение.

ответ

1

В прошлом это было возможно с помощью апплетов Java. Фактически, я построил один из первых апплетов, чтобы сделать это. Он может изменить размер изображений на лету или сжать любой файл перед обновлением, но я отвлекся. В настоящее время апплеты широко не поддерживаются в браузерах.

У вас есть возможность использовать один из нескольких загрузчиков файлов javascript, которые позволяют загружать изображение в холст. См. Это excellent tutorial on MDN о том, как использовать холст. Это QA объясняет, как загрузить изображение в холст.

1

Это не то, что вы можете сделать. Код Django запускается на сервере. Единственный код, который вы можете запустить локально, - это Javascript в браузере.

+0

Итак, мне нужно будет создать настольное приложение, которое связывается с моим приложением Django, я думаю .... – Luca

Смежные вопросы