当前位置: 首页 > 知识库问答 >
问题:

api rest调用以更新django模型时出现错误415

长孙宜
2023-03-14

我正在使用djangorestframe、django 2.1.4和python 3.6我有一个简单的模型,我试图通过一个使用请求的脚本来添加。即使我通过json格式传递数据,它也会给我一个415错误。我需要做什么来修复它?

模型。派克

class Card(models.Model):
    id           = models.CharField(max_length=36, blank=False, primary_key=True)
    card_title   = models.CharField(max_length=100, blank=False)

序列化程序。派克

from rest_framework import serializers
class CardSerializer(serializers.ModelSerializer):
    class Meta:
        model = Card
        fields = ('id', 'card_title',)

意见。派克

from cards.models import Card
from cards.serializers import CardSerializer
from rest_framework import generics
from rest_framework import permissions

class CardList(generics.ListCreateAPIView):
    permission_classes = ()

    queryset = Card.objects.all()
    serializer_class = CardSerializer


class CardDetail(generics.RetrieveUpdateDestroyAPIView):
    permisssion_classes = () # set the permission class

    queryset = Card.objects.all()
    serializer_class = CardSerializer

urls.py

from django.urls import path
from rest_framework.urlpatterns import format_suffix_patterns
from cards import views

urlpatterns = [
    path('cards/', views.CardList.as_view()),
    path('cards/<int:pk>/', views.CardDetail.as_view()),
]

urlpatterns = format_suffix_patterns(urlpatterns)

最后,这是我用来更新它的脚本

import json
import requests # http requests 
BASE_URL = "http://127.0.0.1:8000/"    
ENDPOINT = "cards/"   

def create_update():
    new_data = {
        'id': 3,
        "card_title": "AA"  
    }
    r = requests.post(BASE_URL + ENDPOINT, data=json.dumps(new_data))
    print(r.headers)
    if r.status_code == requests.codes.ok:
        return r.json()
    return r.text

create_update()

有趣的是,我可以在脚本中获取新的_数据,然后使用媒体类型application/json,通过原始数据部分下的djangorestframework工具发布。

这是请求头-

{'Date': 'Sun, 30 Dec 2018 17:53:33 GMT', 'Server': 'WSGIServer/0.2 CPython/3.6.6', 'Content-Type': 'application/json', 'Vary': 'Accept, Cookie', 'Allow': 'GET, POST, HEAD, OPTIONS', 'X-Frame-Options': 'SAMEORIGIN', 'Content-Length': '62'}

这里到底发生了什么?

共有1个答案

曾修真
2023-03-14

在我运行的脚本中,我有codedata=json.dumps(new_data)。需要改为data=new_data。然后它完美地工作。

 类似资料:
  • 显然,在将我的新用户表添加到站点之后,DJANGOADMINLOG仍然有一个FK to AUTHUSER表。有什么办法解决这个问题吗?我没有看到这个问题在舞台或地方,所以一定是发生了一些奇怪的事情。 回溯(最近的呼叫是最后一次): 文件“/app/.heroku/python/lib/python2.7/site-packages/django/core/handlers/base.py”,第11

  • 问题内容: 我尝试通过bash脚本执行此命令,但出现以下错误: 错误stacktrace: {“错误”:“ IndexPrimaryShardNotAllocatedException [[my_index]主要未分配后api]”,“状态”:409} {“错误”:“ ElasticSearchIllegalArgumentException [无法更新非动态设置[[index.analysis.f

  • 我在Android应用程序中使用Jackson。我有一个用于传入调用的,它保存了整个调用的信息,然后将其保存到JSON数组中的JSON对象中。 然后,我得到下面的异常,它指向我调用< code > object mapper mapper = new object mapper()的那一行。我不知道该怎么办,因为我没有写那些类。救命? 我的广播接收器在这里:http://pastie.org/46

  • 问题内容: 我已经定义了一个模型,并通过创建了它的关联数据库。现在,我已经向模型添加了一些字段,我syncdb再次尝试了,但是没有输出出现。尝试从模板访问这些新字段时,出现“ No Such Column”异常,使我相信syncdb实际上并未更新数据库。这里正确的命令是什么? 问题答案: 似乎你需要的是迁移系统。South真的很棒,工作非常好,有一些自动化工具可以简化你的工作流程。 注意:sync

  • 问题内容: 我正在使用以下代码填充数据库: 跑步时 它给出了错误: 我的其余文件都可以,但是出现此错误。我正在遵循 Tango的Django 教程,但由于该书涉及Django 1.5.4,并且我使用的是Django 1.8,所以有人可以在这里帮助我吗? 问题答案: 我在Django 1.7rc2中有同样的例外。解决方案是在程序的开头添加以下行: 更新:现在已针对Django 1.8进行了记录。