如何使用 REST 框架保存标头请求

扎戈罗德尼·奥列克西

我正在使用 django 3.0.7 和 Django Rest Framework

models.py看起来像这样:

class BlogPost(models.Model):
        title                           = models.CharField(max_length=50, null=False, blank=False)
        body                            = models.TextField(max_length=5000, null=False, blank=False)
        header                          = models.TextField(max_length=5000, null=False, blank=False)
        image                           = models.ImageField(upload_to=upload_location, null=False, blank=False)
        date_published          = models.DateTimeField(auto_now_add=True, verbose_name="date published")
        date_updated            = models.DateTimeField(auto_now=True, verbose_name="date updated")
        author                          = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
        slug                            = models.SlugField(blank=True, unique=True)

        def __str__(self):
                return self.title

serializers.py

class BlogPostSerializer(serializers.ModelSerializer):

    class Meta:
        model = BlogPost
        fields = ['title', 'body', 'image', 'date_updated', 'username']

views.py

@api_view(['POST'])
def api_create_blog_view(request):

    blog_post = BlogPost(author=request.user)

    if request.method == 'POST':
        serializer = BlogPostSerializer(blog_post, data=request.data)
        data = {}
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

我需要在“header”数据库字段中保存标题,我试图以某种方式保存:

serializer = BlogPostSerializer(blog_post, data=request.data, header=request.META)

但它没有用

杰弗里

你正在做的事情是在正确的轨道上。
HttpRequest.META给出一个包含所有可用 HTTP 标头的字典。您也可以使用HttpRequest.headers,这是访问所有带 HTTP 前缀的标头以及 CONTENT_LENGTH 和 CONTENT_TYPE 的更简单方法。

您可以在is_valid()检查后保存该值

@api_view(['POST'])
def api_create_blog_view(request):

    blog_post = BlogPost(author=request.user)

    if request.method == 'POST':
        serializer = BlogPostSerializer(blog_post, data=request.data)
        data = {}
        if serializer.is_valid():
            serializer.save(header=request.headers)
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何获取请求标头以保存到MDC

如何更改请求的标头?

如何使用相同的方法和不同的标头简化REST控制器?

如何在Java REST保证的HTTP请求中打印请求正文和标头?

为什么我的REST服务.NET客户端发送不带身份验证标头的每个请求,然后使用身份验证标头重试?

使用Django Rest框架在发布请求时获取自定义标头

在Django rest框架中处理请求标头,以获取在标头中传递的密钥?

Ruby Rest客户端POST,如何发送标头

如何使用Reqwest设置请求标头?

带有REST API的Ajax请求标头

在Django rest框架中处理请求标头,以获取传递到标头中的密钥,并将其与User表一起保存?

如何从rest_framework.test.Client指定Accept标头?

如何使用Django Rest Framework设置Content-Disposition标头

如何使用typed-rest-client设置请求标头?

如何在Django REST框架中正确设置HTTP_405_METHOD_NOT_ALLOWED状态代码的Allow标头

Django REST框架:使用Accept-Language标头设置实例的“语言环境”

在保存请求或使用django rest框架响应之前,如何对传入请求执行某些任务?

Spring Rest服务中的可选请求标头

如何从标头(REST SDK)中检索承载令牌

如何使用Mechanize获取请求标头?

使用骨干.js禁用OPTIONS标头以调用REST API

如何使用AFNetworking添加请求标头?

如何查看TCL REST响应标头

如何在Rest WebService中获取请求标头值

如何在WordPress Rest API调用中设置请求标头

如何使用具有标头的 REST URL 创建连接器?

如果 AJAX REST API 成功或失败,我如何访问成功或错误回调中的请求标头?

如何使用 MicroProfile Rest Client 在 Quarkus Apps 中传播 Authorization 标头?

使用共享访问签名时 Azure 创建文件 REST API 的授权请求标头