Poste à django de repos cadre
J'aimerais poster sur mon Django serveur à l'aide de post
afin que je puisse ajouter un todo
élément. Voici le modèle:
class Todo(models.Model):
title = models.CharField(max_length=200);
text = models.TextField()
completed = models.BooleanField(default=False)
created_at = models.DateTimeField(default=datetime.now, blank = True )
def __str__(self):
return self.title
Et sérialiseurs:
class TodoSerializer(serializers.ModelSerializer):
class Meta:
model = Todo
fields = ("id", 'title','text', 'completed', 'created_at')
Et vue:
class TodoList(APIView):
def get(self,request):
todo=Todo.objects.all()
serializer=TodoSerializer(todo,many=True)
return Response(serializer.data)
def post(self,request):
Todo.objects.create(
title=request.POST.get('title'),
text=request.POST.get('text'))
return HttpResponse(status=201)
Ma requête post est
{ "title": "new title",
"text": "a test text"}
Et il m'a dit
IntegrityError at /todos/
(1048, "Column 'title' cannot be null")
Comme un débutant à Django, je ne comprends pas cette erreur. Des idées?
- Au lieu de créer comme cela, Vous pouvez toujours utiliser les sérialiseurs pour la même chose.
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin pour accéder à
request.data
au lieu derequest.POST
,Depuis que vous avez demandé sur d'autres méthodes en plus de poster dans les commentaires, je vais vous montrer un exemple de ModelViewSet qui vous permettra de post pour ajouter un Todo, ainsi que de fournir un soutien pour la récupération, la mise à jour et la suppression de vos tâches.
Lecture recommandée:
http://www.django-rest-framework.org/api-guide/viewsets/#modelviewset
La ModelViewSet classe allons vous fournir un défaut de mise en œuvre de méthodes de vue de liste, créer, récupérer, mettre à jour (entier ou partiel de mise à jour), et de supprimer des tâches. Ces actions sont mappés à certaines méthodes pour les différentes url, obtenir est mappé à la liste et récupérer des, post est mappé à créer, à mettre et le patch sont mappées à la mise à jour et partial_update, et supprimer est mappé à détruire.
Puis dans votre urls.py, comprennent la TodoViewSet à l'aide de
TodoViewSet.as_view(...)
:Ici, nous sommes en citant explicitement la cartographie des méthodes de requêtes pour afficher les actions que je l'ai mentionné avant.
Au lieu de créer comme cela, Vous pouvez toujours utiliser les sérialiseurs pour la même
pour mettre de la demande :
pour supprimer: