我是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上传它。更好的是用户选择原始图像,一些代码在本地转换它,然后上传转换后的图像。
答案 0 :(得分:1)
这不是你能做的事情。 Django代码在服务器上运行。您可以在本地运行的唯一代码是浏览器中的Javascript。
答案 1 :(得分:1)
过去在Java applet的帮助下,这种事情很有可能。事实上,我构建了第一个小程序之一。它可以动态调整图像大小或压缩任何文件,但我离题了。现在,applets在浏览器中得不到广泛支持。
您可以选择使用多个javascript文件上传器之一,允许将图像加载到画布中。有关如何使用画布的信息,请参阅此excellent tutorial on MDN。这个QA解释了如何将图像加载到画布中。