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

Django视图调用api

常乐
2023-03-14

所以我使用django视图调用api post方法,但它给了我400个错误

当我遇到csrf禁止错误b4时,im现在使用@CSRF_exempt。我尝试对API本身执行post方法,并使用视图调用API。

使用View:QueryDict:{}[22/jan/2018 18:56:12]“post/api/test/?book=second+&author=ban&date=2018-01-10+08%3a00am http/1.1”400 36[22/jan/2018 18:56:12]“post/test/http/1.1”200 19

这是我的代码

models.py

class TestPost(models.Model):
    book = models.CharField(max_length=10, blank=True, null=True)
    author = models.CharField(max_length=10, blank=True, null=True)
    date = models.DateTimeField(blank=True, null=True)
class TestPostSerializer(serializers.ModelSerializer):
    date = serializers.DateTimeField(format="%Y-%m-%d %I:%M %p")

    class Meta:
        model = TestPost
        fields = ('id', 'book', 'author', 'date')
from django.http import HttpResponse
import requests

def my_django_view(request):
    if request.method == 'POST':
        r = requests.post('http://127.0.0.1:8000/api/test/', params=request.POST)
    else:
        r = requests.get('http://127.0.0.1:8000/api/test/', params=request.GET)
    if r.status_code == 200:
        return HttpResponse('Yay, it worked')
    return HttpResponse('Could not save data')

class TestPostViewSet(viewsets.ModelViewSet):
    permission_classes = [AllowAny]
    queryset = TestPost.objects.all()
    serializer_class = TestPostSerializer

共有1个答案

蒋招
2023-03-14

我不确定您调用的API,但我认为您可能需要在post请求中发送data而不是params

r = requests.post('http://127.0.0.1:8000/api/test/', data=request.POST)
 类似资料:
  • 问题内容: 有什么办法可以从Django视图进行RESTful api调用吗? 我正在尝试从Django视图沿URL传递标头和参数。我从一个半小时开始搜寻,但是找不到任何有趣的事情。 任何帮助,将不胜感激 问题答案: 是的,当然有。你可以使用urllib2.urlopen,但我更喜欢请求。 请求库是urllib3之上的一个非常简单的API.

  • 主要内容:静态网页,从数据库列表和显示数据在某些情况下编写视图代码,正如我们所看到前面工作真的很繁重。想象一下,只需要一个静态页面或列表页。 Django还提供了一种简单的方法来设置这些简单的视图被称为通用视图。 不同于传统的视图,一般的视图是一个类但没有函数。Django还提供了一组类 django.views.generic 通用视图,以及每一个普通视图是这些类或从它们中的一个类继承的。 有10+泛型类− 你可以使用通用视图。让我们来

  • 问题内容: 我有一个关于如何从模板HTML按钮调用视图函数的问题?像onclick函数一样?这是模板: 而views.py是: 非常感谢你。 问题答案: 一种选择是,你可以使用 像这样: (删除和) 如果你想加载页面的特定部分,而无需重新加载页面-你可以 和一个听众

  • 主要内容:简单的视图视图功能,或简称"view",是一个简单的Python函数,它接受一个Web请求,并返回一个Web响应。此响应可以是 Web页的HTML内容,或重定向,或404错误,或XML文档,或图像/片等。例如:使用视图创建页面,请注意需要将一个视图关联到一个URL,并把它看作一个网页。 在Django中,视图必须在应用程序的 views.py 文件中创建。 简单的视图 我们将在 myapp 创建一个简单的视

  • 我正在学习Django和Django REST框架。我正在尝试执行API并添加查看权限。 来自django。db从django导入模型。contrib。auth。模型导入用户 我的模特: 我的连载者: 我的看法: 当我尝试添加新“word”时-显示错误: 序列化程序或视图中存在问题?如何修复?

  • phpGrace 视图调用的2种方式 : 1、符合命名规则的自动调用 规则:控制器_方法名.php 控制在运行末尾会自动在视图文件夹下寻找符合 “控制器_方法名.php”规则的视图文件,一旦发现会自己引入此视图。 2、在控制器内使用 $this->display() 函数 参数:视图名称 示例: <?php class indexController extends grace{ publ