J'essaie de POST des données sur mon API. J'ai un modèle avec un champ image
où:
image = models.ImageField()
J'ai une image sur ma boîte locale, que j'essaye d'envoyer. Est-ce que je l'envoie correctement?
{
"id": "3",
"uid":"273a0d69",
"uuid": "90",
"image": "@/home/user/Downloads/tt.jpeg"
}
Ce n'est pas comme ça que vous envoyez un fichier sur postier. Ce que vous avez fait, c'est envoyer une chaîne qui est le chemin de votre image, rien de plus.
Ce que vous devriez faire est
Vous êtes prêt à partir.
Dans votre vue Django,
from rest_framework.views import APIView
from rest_framework.parsers import MultiPartParser
from rest_framework.decorators import parser_classes
@parser_classes((MultiPartParser, ))
class UploadFileAndJson(APIView):
def post(self, request, format=None):
thumbnail = request.FILES["file"]
info = json.loads(request.data['info'])
...
return HttpResponse()
La réponse acceptée fonctionne si vous définissez le code JSON comme paire clé/valeur dans le fichier form-data
panneau (voir l'image ci-dessous)
Néanmoins, je me demande s’il s’agit d’un moyen très simple de concevoir une API. S'il est obligatoire de télécharger à la fois l'image et le JSON en un seul appel, c'est peut-être acceptable, mais si vous pouviez séparer les routes (une pour le téléchargement d'image, l'autre pour le corps JSON avec un en-tête de type de contenu approprié), cela semble mieux .