私はDjango Restで簡単なCRUD操作を実装しようとしています。私は正常に作成した、GET
とPOST
。今、行データをPUT
で更新し、DELETE
で行を削除したいとします。我々はそれが項目のリストを返すGET localhost/itemlist
場合localhost/itemlist
PythonでのUPDATEとDELETE操作Django REST
- :
id item_1 item_2 item_3 date_created date_modified
1 test1 test2 test3 16-12-2017 16-12-2017
2 ex1 ex2 ex3 16-12-2017 16-12-2017
APIエンドポイント - :
現在、私のテーブルは次のようになります。
POST localhost/itemlist
フィールドがitem_1
,item_2
,item_3
の場合、行が作成されます。
ここでは、PUT
を使用して特定の行を更新したいと考えています。
from rest_framework import generics
from .serializers import itemlistSerializer
from .models import itemlist
class ItemView(generics.ListCreateAPIView):
queryset = itemlist.objects.all()
serializer_class = itemlistSerializer
def perform_create(self, serializer):
serializer.save()
シリアライザ:item_1 == ex1
urls.py
from django.conf.urls import url, include
from rest_framework.urlpatterns import format_suffix_patterns
from .views import ItemView
urlpatterns = {
url(r'^itemlists/$', ItemView.as_view(), name="create"),
}
urlpatterns = format_suffix_patterns(urlpatterns)
views.py行を削除する必要がありますように、私はitem_3
どこitem_1 == "test1"
の値を更新する場合は、DELETE .py
from rest_framework import serializers
from .models import itemlist
class itemlistSerializer(serializers.ModelSerializer):
class Meta:
"""Meta class to map serializer's fields with the model fields."""
model = itemlist
fields = ('id', 'item_1', 'item_2', 'item_3', 'date_created', 'date_modified')
read_only_fields = ('date_created', 'date_modified')
models.py
from django.db import models
class itemlist(models.Model):
"""This class represents the itemlist model."""
item_1 = models.CharField(max_length=255, blank=True, unique=False)
item_2 = models.CharField(max_length=255, blank=True, unique=False)
item_3 = models.CharField(max_length=255, blank=True, unique=False)
date_created = models.DateTimeField(auto_now_add=True)
date_modified = models.DateTimeField(auto_now=True)
def __str__(self):
"""Return a human readable representation of the model instance."""
return "{}".format(self.item_1)
幸いですが、http_method_namesを定義する必要はありません。また、request.userのget_query_setメソッドに間違いがあります。self.request.userにする必要があります –
そのエラーのおかげで、あなたはhttp_method_namesについても正しいですが、メソッドを明示的に設定することは良いことだと思います。場合によっては取得要求を許可する必要があるだけなので、他の方法を無効にすることもできます。 –