【发布时间】:2021-02-18 04:29:46
【问题描述】:
我正在尝试学习如何使用 Django REST 框架。我想使用 ModelViewSet 制作一个非常简单的 API。我已经关注了文档,但我不清楚 ModelViewSet 在执行router.register(r"polls", QuestionViewSet, basename="polls") 时是否提供从其create 到POST 的自动映射
我一直在尝试我的端点:
curl --location --request POST 'http://localhost:8005/polls/' \
--header 'Content-Type: application/json' \
--data-raw '{
"question_text": "how it do",
"pub_date": "01-01-2021"
}'
但它返回:{"detail":"Method \"POST\" not allowed."}
型号:
class Question(models.Model):
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
class Choice(models.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
Serailizer 和 ModelViewSet:
class QuestionSerializer(serializers.ModelSerializer):
class Meta:
model = Question
fields = ["id", "question_text", "pub_date"]
class QuestionViewSet(viewsets.ModelViewSet):
queryset = Question.objects.all()
serializer_class = QuestionSerializer()
路由器:
from django.conf.urls import re_path, url, include
from django.urls import path
from rest_framework import routers
from .question import QuestionViewSet
router = routers.DefaultRouter()
router.register(r"polls", QuestionViewSet, basename="polls")
urlpatterns = router.urls
【问题讨论】:
标签: python django api rest django-rest-framework