使用Django Rest Framework将输入文件从Vue.js发送到Django时出现问题

米格尔·埃雷罗斯·塞哈斯

我正在尝试使用DRF从Vue.js向Django发送表单。但是响应是400 Patch错误:

{"file":["The submitted data was not a file. Check the encoding type on the form."]}

这是我在Vue.js中的模板:

  <input type="file" id="file" ref="file" class="input is-rounded" v-on:change="handleFileUpload()"/>

这是Vue方法。我发送enctype:'multipart / form-data',我认为我使用的是发送文件的正确方法。无论如何,我认为这是问题所在,也许this.file没有正确发送文件。

HTTP是Axios的常量:“ const HTTP = axios.create({})”

 methods: {
 handleFileUpload(){
    this.file = this.$refs.file.files[0];
  },
 create: function () {
  this.token = this.$store.state.access_token;

    HTTP({
      method: 'PATCH',
      url: 'tickets/create/',
      enctype: 'multipart/form-data',
      headers: {
        'Authorization': `Bearer ${this.token}`,
      },
      data: {
        file:this.file,
      }
    })
    .then(response => { ...

这是我的view.py方法:

  @csrf_exempt
  @api_view(['GET', 'POST','PATCH'])
  def Create(request):
     parser_classes = (FileUploadParser,)

  if request.method == 'PATCH' or request.method == 'POST':


    serializer = CreateTicketSerializer(
        Tickets,
        data=request.data
    )
    serializer.is_valid(raise_exception=True)

    if serializer.is_valid():
        serializer.save()
        return Response(serializer.data, status=status.HTTP_201_CREATED)
    else:
         return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
#Return this if request method is not POST
return Response({'ok': 'false'}, status=status.HTTP_200_OK)

而我的序列化器:

 class CreateTicketSerializer(serializers.ModelSerializer):
    """Ticket serializer."""


   file = serializers.ImageField(required=False,max_length=None, use_url=True)

class Meta:
    model = Tickets
    fields = (
        'file',
    )
Mehamasum

您需要使用FormData API来构造一组代表表单字段及其值的键/值对:

create: function () {
    this.token = this.$store.state.access_token;

    let data = new FormData(); // creates a new FormData object
    data.append('file', this.file); // add your file to form data

    HTTP({
      method: 'PATCH',
      url: 'tickets/create/',
      headers: {
        'Authorization': `Bearer ${this.token}`,
        'content-type': 'multipart/form-data'
      },
      data
    })
    .then(response => { ...

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用Django Rest Framework教程时出现TypeError

使用Axios将文件发送到Spring Boot REST

使用django-rest-framework使用APITestCase

使用WPF将Enter键发送到外部应用程序时出现问题

Django REST框架;使用“组”字段序列化用户模型时出现问题

如何忽略发送到Django REST Framework的CSRF令牌?

在将经过身份验证的请求发送到OAuth2.0 Django rest Framwork时出现权限问题

使用Django将文件发送到GCS的最佳方法

Django Rest Framework无需序列化程序即可将数据发送到视图

使用Django加载静态CSS文件时出现问题

使用Django Rest Framework上传文件时出现错误“未提交文件”。

如何使用Axios将CSRF Cookie从React发送到Django Rest Framework

我无法将帖子发送到Django Rest Framework

使用django-rest-framework将JSON文件中的多个记录保存到MySQL的问题

使用httponly cookie将JWT从节点REST API发送到Vue.js SPA

在Django Rest框架中使用POST方法发送信息时出现问题

通过使用Axios.post将数据发送到后端,数据格式出现问题

Django Rest将URL中的参数发送到queryset

Lotusscript:使用PHP将电子邮件中的文件发送到网站时出现问题

jQuery将文件发送到Django

使用JQuery Mobile使用PHP,POST和JSON将数据发送到服务器时出现问题

Heroku使用Django提供静态文件时出现问题

使用SendInput包装器将击键发送到DirectX应用程序时出现问题

将文件发送到API时出现问题

通过提取将文件发送到 Django REST 端点?

使用 redux 将图像从 react 发布到 Django Rest API 时出现问题

将 POST 正文发送到 Firestore REST API 时出现问题

使用 Laravel 和 Guzzle 包将 Web API 发送到 Spotify 时出现问题

Django Rest Framework 将查询集发送到序列化程序尝试 SlugRelatedField