Что такое конечные точки API ModelViewSet

Мне уже удалось получить один и получить все запросы, теперь я пытаюсь удалить и создать новых пользователей через 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__'

Любые рекомендации?

Вы пытались отправить HTTP-запрос DELETE на /api/edutiants/id/ ?

Ozgur Akcali 09.04.2019 13:59

да, он возвращает мне удаленный объект, но когда я перехожу к 127.0.0.1:8000/api/etudiants/, удаленный объект все еще там

Odess4 09.04.2019 14:01

В моем терминале отображается «DELETE /api/etudiants/HTTP/1.1» 405 43 КРАСНЫМ цветом.

Odess4 09.04.2019 14:02

Код ответа 405 означает «Метод не разрешен». Вы предоставили весь код для EtudiantViewSet? Если нет, можете ли вы поделиться остальными?

Ozgur Akcali 09.04.2019 14:03

да, я поделился всем кодом

Odess4 09.04.2019 14:04

я должен добавить еще один метод?

Odess4 09.04.2019 14:05

Из журналов кажется, что вы отправляете запрос на «127.0.0.1:8000/api/etudiants/», тогда как это должно быть «127.0.0.1:8000/api/etudiants/id/», обратите внимание на идентификатор в конце , это должен быть идентификатор экземпляра, который вы хотите удалить

Ozgur Akcali 09.04.2019 14:05

хорошо, я думаю, что просто вставил неправильное сообщение об ошибке, извините за это. Вот почему я только что попробовал: я отправил запрос на удаление на 127.0.0.1:8000/api/etudiants/1 в POSTMAN, который дал мне следующее сообщение: «УДАЛИТЬ /api/etudiants/1 HTTP/1.1» 301 0 ( думаю, это сработало) Но когда я перехожу к 127.0.0.1:8000/API/учащиеся, объект, который я только что удалил, все еще там, почему?

Odess4 09.04.2019 14:10

Можете ли вы добавить символ косой черты (/) к URL-адресу вашего запроса? Я думаю, что запрос перенаправляется с запросом GET без него (т.е. «/api/etudiants/1/» вместо «/api/etudiants/1»)

Ozgur Akcali 09.04.2019 14:11

а надо посмотреть точный ответ в почтальоне, для чего 301 редирект? (какой Location заголовок ответа?)

dirkgroten 09.04.2019 14:13

Это сработало ! , спасибо, как насчет обновления и создания, пожалуйста?

Odess4 09.04.2019 14:13

Как я могу отправить запрос PUT или POST?

Odess4 09.04.2019 14:19
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
3
12
825
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы использовали 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\" в запросе.

Odess4 09.04.2019 14:41

Другие вопросы по теме