का उपयोग करके किसी ऑब्जेक्ट को कैसे हटाएं I Django Rest Framework का उपयोग करके मेरे ईवेंट प्लानिंग ऐप के लिए एक RESTful API लिखने का प्रयास कर रहा हूं, लेकिन मुझे उन तरीकों का उपयोग करते समय कुछ परेशानी हो रही है जो HTTP विधि प्राप्त करने की अपेक्षा नहीं करते हैं। मैंने डीआरएफ साइट पर ट्यूटोरियल के माध्यम से पढ़ा है। क्या मैं ट्यूटोरियल और Django साइट पर वर्ग आधारित दृश्य प्रलेखन के माध्यम से पढ़ने के बाद समझ में से है कि अगर वहाँ एक वर्ग आधारित इस तरह (डीआरएफ ट्यूटोरियल से लिया)Django Rest Framework
class SnippetDetail(APIView):
"""
Retrieve, update or delete a snippet instance.
"""
def get_object(self, pk):
try:
return Snippet.objects.get(pk=pk)
except Snippet.DoesNotExist:
raise Http404
def get(self, request, pk, format=None):
snippet = self.get_object(pk)
serializer = SnippetSerializer(snippet)
return Response(serializer.data)
def put(self, request, pk, format=None):
snippet = self.get_object(pk)
serializer = SnippetSerializer(snippet, data=request.DATA)
if serializer.is_valid():
serializer.save()
return Response(serializer.data)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def delete(self, request, pk, format=None):
snippet = self.get_object(pk)
snippet.delete()
return Response(status=status.HTTP_204_NO_CONTENT)
ध्यान में रखते हुए विभिन्न तरीकों दृश्य है विभिन्न HTTP अनुरोध विधियों के अनुरूप है। इसलिए यदि मेरे पास www.foo.com/bar
है तो यह उस पते पर कौन सी अनुरोध विधि भेजी जाती है, इसके आधार पर यह दो अलग-अलग चीजें करेगी। तो इसका मतलब है कि मुझे कुछ और निर्दिष्ट नहीं करना होगा क्योंकि निष्पादित किया गया कार्य यूआरएल के साथ भेजे गए तरीके के आधार पर निर्धारित किया जाता है। क्या ये सही है?
मैं इस दृश्य जो मैं डीआरएफ साइट
class EventDetail(APIView):
"""
Retrieve, update or delete a event instance.
"""
def get_object(self, pk):
try:
return Event.objects.get(pk=pk)
except Event.DoesNotExist:
raise Http404
def get(self, request, pk, format=None):
event = self.get_object(pk)
serializer = EventSerializer(event)
return Response(serializer.data)
def post(self, request, format=None):
serializer = EventSerializer(data=request.DATA)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
# def put(self, request, pk, format=None):
# event = self.get_object(pk)
# serializer = EventSerializer(event, data=request.DATA)
# if serializer.is_valid():
# serializer.save()
# return Response(serializer.data)
# return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def delete(self, request, pk, format=None):
event = self.get_object(pk)
event.delete()
return Response(status=status.HTTP_204_NO_CONTENT
जो इन यूआरएल
urlpatterns = patterns('',
# Get event
url(r'^(?P<pk>\d+)/$', views.EventDetail.as_view(),
name='create_events'),
# list all events
url(r'^list/$', views.EventList.as_view(),
name='list_events'),
# url(r'^update$/(?P<pk>\d+)', #update event),
url(r'^create/$', views.EventDetail.as_view(),
name='create_events'),
# delete event
url(r'^delete$/(?P<pk>\d+)',
views.EventDetail.as_view(), name='delete_event'),
)
जो मैं इस आदेश के साथ कर्ल इसका परीक्षण करना कोशिश कर रहा हूँ करने के लिए नक्शे पर उदाहरण के बाद मॉडल करने के लिए करने की कोशिश की है (जैसा कि यहां बताया गया है DELETE using CURL with encoded URL)
curl -X DELETE "http://127.0.0.1:8000/events/delete/1"
ऐसा प्रतीत होता है क्या यह होना चाहिए:
[18/Oct/2014 22:41:27] "DELETE /events/delete/1 HTTP/1.1" 404 2707
लेकिन वास्तविक रिकॉर्ड मेरी डेटाबेस
से नहीं हटाया जाता है कि यहां कुछ है कि मैं इन इस ठीक से काम करने के लिए प्राप्त करने के लिए भूल रहा है?
लेकिन मेरे बारे में क्या मानचित्रण/घटनाओं/URLConfs में हटाना चाहते हैं? – user3282276
सलाह नहीं दी गई है (यह एंटी-आरईएसटी की तरह है), लेकिन आप अपना urlconf 'url (r'/events/delete/(? P \ d +) ', EventDetail.as_view())' –
जोड़ने के लिए सेट अप करेंगे) मेरे पास वर्तमान में मेरे urlconf में क्या है। क्या यह पहले से निर्दिष्ट पते के साथ काम नहीं कर रहा है? लेकिन आप जो कह रहे हैं उससे मैं इसे – user3282276