Мне уже удалось получить один и получить все запросы, теперь я пытаюсь удалить и создать новых пользователей через URL-адрес.
просмотры.py :
class EtudiantViewSet(viewsets.ModelViewSet):
queryset=Etudiant.objects.all()
serializer_class=EtudiantSerializer
роутер.py:
router=routers.DefaultRouter()
router.register('etudiants',EtudiantViewSet)
urls.py:
urlpatterns = [
url(r'^admin/', admin.site.urls),
path('api/',include(router.urls)),]
модели.ру:
class Etudiant(models.Model):
id=models.IntegerField(primary_key=True)
nom=models.CharField(max_length=20)
prenom=models.CharField(max_length=20)
cne=models.CharField(max_length=10)
email=models.EmailField()
tel=models.CharField(max_length=10)
def __str__(self):
return 'Nom : {} , Prénom : {}'.format(self.nom,self.prenom)
сериализаторы.py:
class EtudiantSerializer(serializers.ModelSerializer):
class Meta :
model=Etudiant
fields='__all__'
Любые рекомендации?
да, он возвращает мне удаленный объект, но когда я перехожу к 127.0.0.1:8000/api/etudiants/, удаленный объект все еще там
В моем терминале отображается «DELETE /api/etudiants/HTTP/1.1» 405 43 КРАСНЫМ цветом.
Код ответа 405 означает «Метод не разрешен». Вы предоставили весь код для EtudiantViewSet? Если нет, можете ли вы поделиться остальными?
да, я поделился всем кодом
я должен добавить еще один метод?
Из журналов кажется, что вы отправляете запрос на «127.0.0.1:8000/api/etudiants/», тогда как это должно быть «127.0.0.1:8000/api/etudiants/id/», обратите внимание на идентификатор в конце , это должен быть идентификатор экземпляра, который вы хотите удалить
хорошо, я думаю, что просто вставил неправильное сообщение об ошибке, извините за это. Вот почему я только что попробовал: я отправил запрос на удаление на 127.0.0.1:8000/api/etudiants/1 в POSTMAN, который дал мне следующее сообщение: «УДАЛИТЬ /api/etudiants/1 HTTP/1.1» 301 0 ( думаю, это сработало) Но когда я перехожу к 127.0.0.1:8000/API/учащиеся, объект, который я только что удалил, все еще там, почему?
Можете ли вы добавить символ косой черты (/) к URL-адресу вашего запроса? Я думаю, что запрос перенаправляется с запросом GET без него (т.е. «/api/etudiants/1/» вместо «/api/etudiants/1»)
а надо посмотреть точный ответ в почтальоне, для чего 301 редирект? (какой Location
заголовок ответа?)
Это сработало ! , спасибо, как насчет обновления и создания, пожалуйста?
Как я могу отправить запрос PUT или POST?
Вы использовали ModelViewSet
для управления API.
Который предоставляет вам следующие URL-адреса в соответствии с вашей декларацией.
<host>/api/etudiants/
СООБЩЕНИЕ<host>/api/etudiants/<Etudiant id>/
УДАЛЯТЬ<host>/api/etudiants/<Etudiant id>/
ПОМЕЩАТЬ<host>/api/etudiants/<Etudiant id>/
ПЛАСТЫРЬ<host>/api/etudiants/<Etudiant id>/
ПОЛУЧАТЬ<host>/api/etudiants/
ПОЛУЧАТЬ (конечная точка списка)Удаление: Вы можете использовать <host>/api/etudiants/<Etudiant id>
заменить <Etudiant id>
на идентификатор вашего Etudiant
объекта и вызвать DELETE
метод http на этой конечной точке.
Творчество: используйте <host>/api/etudiants/
добавьте json полезная нагрузка, затем вызовите POST
метод http на этой конечной точке.
Если это не поможет вам, то оставьте свой комментарий ниже.
используя почтальона, я отправил почтовый запрос на этот URL-адрес: 127.0.0.1:8000/api/etudiants/, но он отображает: «detail»: «Неподдерживаемый тип носителя \"text/plain\" в запросе.
Вы пытались отправить HTTP-запрос DELETE на /api/edutiants/id/ ?