gpt4 book ai didi

Django-Rest-Framework CreateAPIView 不工作

转载 作者:行者123 更新时间:2023-12-05 03:00:37 24 4
gpt4 key购买 nike

我正在尝试从 django-rest-framework 实现一个简单的 View 集,除创建 View 外,一切正常。 ulr ( http://127.0.0.1:8000/api/create/ ) 加载了用于输入数据的表单,但是当我点击 PUT 时,数据未加载到数据库中。终端显示以下错误:[2019 年 6 月 19 日 14:15:29] “GET/api/create/HTTP/1.1” 404 10318未找到:/api/create/

我正在关注这个tutorial学习整合 Django 和 React。我以前曾尝试单独实现 CRUD View ,但出现循环引用错误。我想 url 定义一定有某种错误,但我无法弄清楚哪里出了问题。

API urls.py:

from articles.api.views import ArticleViewSet
from rest_framework.routers import DefaultRouter

router = DefaultRouter()
router.register(r'', ArticleViewSet, base_name='articles')
urlpatterns = router.urls

API View .py:

from rest_framework import viewsets
from articles.models import Article
from .serializers import ArticleSerializer

class ArticleViewSet(viewsets.ModelViewSet):
serializer_class = ArticleSerializer
queryset = Article.objects.all()

API 序列化器:

from rest_framework import serializers
from articles.models import Article

class ArticleSerializer(serializers.ModelSerializer):
class Meta:
model = Article
fields = ('id', 'title', 'content')

项目 urls.py:

from django.contrib import admin
from django.urls import path, include

urlpatterns = [

path('admin/', admin.site.urls),
path('api-auth/', include('rest_framework.urls')),
path('api/', include('articles.api.urls')),

]

使用此代码,当我访问 ListView 时,下面会出现添加新记录的表单,如果我在那里输入数据,记录就会添加到数据库中。但是当我转到“api/create”并提交表单时,它没有加载到数据库中。更新和删除 View 工作正常。
感谢您的帮助!

最佳答案

如果您要创建一个对象,只需 POST 到/api/URL。不是/api/create/。这是因为您的 ArticleViewSet 包含 CreateAPIView。如果你这样使用:

from rest_framework import generics
class ArticleViewSet(generics.CreateAPIView):
serializer_class = ArticleSerializer
queryset = Article.objects.all()

如果您使用 CreateAPIView,您在 urls.py 中的路由器将无法工作。 Your tutorial对此进行了解释。

您需要发送 POST 数据/api/URL 来创建对象。

  • 创建的 POST 方法
  • PUT 方法进行编辑
  • 获取列表或详细信息的方法
  • DELETE 删除

View 集中的操作。

如果你想使用 CreateAPIView(如上面的代码),你必须像这样更改 urls.py。

urlpatterns = [
url("/api/create/", views.ArticleViewSet.as_view())
]

关于Django-Rest-Framework CreateAPIView 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56670931/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com