Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Django __init__()缺少一个必需的位置参数:'data‘

Django __init__()缺少一个必需的位置参数:'data‘
EN

Stack Overflow用户
提问于 2018-03-16 05:36:33
回答 1查看 1.6K关注 0票数 0

使用Django 2.0.1

基本上,我正在尝试实现番薯,首先我遇到了403号的问题,这阻止了我上传图像(这是因为脚本返回一个Json响应,而我没有自己的观点来处理它),所以我遇到了这个问题。请帮帮我我不配这样,我交税了。

在我的forms.py上

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class EmployeeForm(forms.ModelForm):
  class Meta:
    model = Employee
    fields = '__all__'
    exclude = ['user', 'date_joined','Credits_earned','skills']

  department = forms.CharField(
    widget=forms.TextInput(attrs={
        "class": "form-control",
        "placeholder": _("User...")
    }
    )
  )
  title = forms.CharField(
    widget=forms.TextInput(attrs={
        "class": "form-control",
        "placeholder": _("Title...")
    }
    )
  )
  avatar = forms.ImageField(
    widget=forms.FileInput()
  )

在我的views.py上

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from django.http import JsonResponse


class EmployeeUpdate(JsonResponse,UpdateView):
    template_name = 'test.html'
    model = Employee
    form_class = EmployeeForm
    success_url = '/'

    def get_queryset(self):
        return super(EmployeeUpdate, self).get_queryset().filter(user=self.kwargs['pk'])

    def render_to_response(self, context, **response_kwargs):
        return self.render_to_json_response(context, **response_kwargs)

模板上的脚本:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<script>
window.addEventListener('DOMContentLoaded', function () {
var avatar = document.getElementById('avatar'); // Current avatar
var image = document.getElementById('image');
var input = document.getElementById('id_avatar'); // Image input
var $progress = $('.progress');
var $progressBar = $('.progress-bar');
var $alert = $('.alert');
var $modal = $('#modal');
var cropper;

$('[data-toggle="tooltip"]').tooltip();

input.addEventListener('change', function (e) {
  var files = e.target.files;
  var done = function (url) {
    input.value = '';
    image.src = url;
    $alert.hide();
    $modal.modal('show');
  };
  var reader;
  var file;
  var url;

  if (files && files.length > 0) {
    file = files[0];

    if (URL) {
      done(URL.createObjectURL(file));
    } else if (FileReader) {
      reader = new FileReader();
      reader.onload = function (e) {
        done(reader.result);
      };
      reader.readAsDataURL(file);
    }
  }
});

$modal.on('shown.bs.modal', function () {
  cropper = new Cropper(image, {
    aspectRatio: 1,
    viewMode: 3,
  });
}).on('hidden.bs.modal', function () {
  cropper.destroy();
  cropper = null;
});

document.getElementById('crop').addEventListener('click', function () {
  var initialAvatarURL;
  var canvas;

  $modal.modal('hide');

  if (cropper) {
    canvas = cropper.getCroppedCanvas({
      width: 160,
      height: 160,
    });

    initialAvatarURL = avatar.src;
    avatar.src = canvas.toDataURL();
    $progress.show();
    $alert.removeClass('alert-success alert-warning');
    canvas.toBlob(function (blob) {
      var formData = new FormData();

      formData.append('avatar', blob);

      $.ajax('https://jsonplaceholder.typicode.com/posts', {
        method: 'POST',
        data: formData,
        processData: false,
        contentType: false,

        xhr: function () {
          var xhr = new XMLHttpRequest();

          xhr.upload.onprogress = function (e) {
            var percent = '0';
            var percentage = '0%';

            if (e.lengthComputable) {
              percent = Math.round((e.loaded / e.total) * 100);
              percentage = percent + '%';
              $progressBar.width(percentage).attr('aria-valuenow', percent).text(percentage);
            }
          };

          return xhr;
        },

        success: function () {
          $alert.show().addClass('alert-success').text('Upload success');
        },

        error: function () {
          avatar.src = initialAvatarURL;
          $alert.show().addClass('alert-warning').text('Upload error');
        },

        complete: function () {
          $progress.hide();
        },
      });
    });
  }
});
});
</script>

编辑:,这是完整的回溯:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Request Method: GET
Request URL: http://127.0.0.1:8000/test2/1

Django Version: 2.0.1
Python Version: 3.6.1
Installed Applications:
['accounts.apps.AccountsConfig',
'dashboard.apps.DashboardConfig',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles']

Installed Middleware:
['django.middleware.security.SecurityMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware']

Traceback (most recent call last):
File "C:\Users\Loki\AppData\Local\Programs\Python\Python36\lib\site-packages\django\core\handlers\exception.py", line 35, in inner
response = get_response(request)
File "C:\Users\Loki\AppData\Local\Programs\Python\Python36\lib\site-packages\django\core\handlers\base.py", line 128, in _get_response
response = self.process_exception_by_middleware(e, request)
File "C:\Users\Loki\AppData\Local\Programs\Python\Python36\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Users\Loki\AppData\Local\Programs\Python\Python36\lib\site-packages\django\views\generic\base.py", line 63, in view
self = cls(**initkwargs)
TypeError: __init__() missing 1 required positional argument: 'data'
EN

回答 1

Stack Overflow用户

发布于 2018-03-16 07:15:34

最后起作用的是这段插曲:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# encoding: utf-8
from django.http import HttpResponse
import json

MIMEANY = '*/*'
MIMEJSON = 'application/json'
MIMETEXT = 'text/plain'


def response_mimetype(request):
     """response_mimetype -- Return a proper response mimetype, accordingly to
    what the client accepts, as available in the `HTTP_ACCEPT` header.

    request -- a HttpRequest instance.

"""
    can_json = MIMEJSON in request.META['HTTP_ACCEPT']
    can_json |= MIMEANY in request.META['HTTP_ACCEPT']
    return MIMEJSON if can_json else MIMETEXT


    class JSONResponse(HttpResponse):
    """JSONResponse -- Extends HTTPResponse to handle JSON format response.

   This response can be used in any view that should return a json stream of
   data.

    Usage:

        def a_iew(request):
            content = {'key': 'value'}
            return JSONResponse(content, mimetype=response_mimetype(request))

"""
    def __init__(self, obj='', json_opts=None, mimetype=MIMEJSON, *args, **kwargs):
        json_opts = json_opts if isinstance(json_opts, dict) else {}
        content = json.dumps(obj, **json_opts)
        super(JSONResponse, self).__init__(content, mimetype, *args, **kwargs)

然后在我看来:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class EmployeeUpdate(UpdateView):
    template_name = 'test.html'
    model = Employee
    form_class = EmployeeForm
    success_url = '/'



    def get_queryset(self):
        return super(EmployeeUpdate, self).get_queryset().filter(user=self.kwargs['pk'])

    def form_valid(self, form):
        self.object = form.save()
        data = {'data': 'formData'}
        response = JSONResponse(data, mimetype=response_mimetype(self.request))
        return response

我仍然需要在我的模板中修复一些东西,这样输入就到了它应该去的地方。不过还是谢谢你的支持。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49322105

复制
相关文章
python类中初始化形式:def __init__(self)和def __init__(self, 参数1,参数2,,,参数n)区别
这种形式在init方法中,只有一个self,指的是实例的本身,但是在方法的类部,包含两个属性,name, grade。
Python学习者
2023/06/07
5730
32-位置参数
注意:位置参数中的数字是字符形式的 import sys print(sys.argv) # sys.argv是sys模块里的argv列表 # python3 position_args.py # python3 position_args.py 10 # python3 position_args.py 10 bob
凯茜的老爸
2018/09/11
4420
python之函数的位置参数
  实际开发过程中,经常会遇到很多完全相同或者非常相似的操作,这时,可以将实现类似操作的代码封装为函数,然后在需要的地方调用该函数。这样不仅可以实现代码的复用,还可以使代码更有条理性,增加代码的可靠性。下面我们来介绍一下python的函数位置参数相关内容。
jiankang666
2022/12/05
5510
python之函数的位置参数
解决WebService中System.InvalidOperationException:缺少参数的问题
此问题在.Net 4.0 IIS7 Windows Server 2008下可能会出现。 现象是第一次正常调用,第二次接口报错。 删除CacheDuration即可。
从今若
2019/09/18
2.7K1
django_filters TypeError: __init__() got an unexpected keyword argument 'name'
django-filter 参数名字已经由 name 更改为 field_name
卓越笔记
2023/02/18
5240
(23)Bash位置参数变量
位置参数变量主要是用来向脚本当中传递参数或数据的,变量名不能自定义,变量作用是固定的。
生信real
2020/08/26
8990
[周末往期回顾]Oracle Data Guard 参数介绍
Data Guard作为Oracle提供的一个高可用及灾备解决方案,理解并可以实施它对于DBA来说是非常重要套的技能
bsbforever
2020/08/19
4840
[周末往期回顾]Oracle Data Guard 参数介绍
Django 获取请求参数
  我们在使用python做接口测试的时候,通常使用的是requests库。而大家都知道还有一个request东西,很多人对requests与request两个东西傻傻分不清。下面我简单来介绍一下。
全栈测试开发日记
2023/02/02
2.7K0
Django 获取请求参数
【说站】python位置参数的使用注意
2、调用函数中指定的实际参数的数量必须与形式参数的数量一致(不能传输多传输少),否则Python解释器会抛出TypeError异常,并提示缺乏必要的位置参数。
很酷的站长
2022/11/23
5940
【说站】python位置参数的使用注意
Linux之Shell位置参数变量
文章目录 位置参数变量 1. 介绍 2. 基本语法 3. 位置参数变量 位置参数变量 1. 介绍 当我们执行一个 shell 脚本时,如果希望获取到命令行的参数信息,就可以使用到位置参数变量 比如 : ./myshell.sh 100 200 , 这个就是一个执行 shell 的命令行,可以在 myshell 脚本中获取到参数信息 2. 基本语法 n (功能描述:n 为数字,0 代表命令本身,1-9 代表第一到第九个参数。十以上的参数,十以上的参数需要用大括号包含,如 * (功能描述:这个变量代表命令
兮动人
2021/07/21
5.3K0
Linux之Shell位置参数变量
Django连接MySQL缺少mysqlclient包,Python3.8安装mysqlclient
在https://www.lfd.uci.edu/~gohlke/pythonlibs/#mysqlclient找到适合自己版本的mysqlclient
SingYi
2022/07/14
8840
Django连接MySQL缺少mysqlclient包,Python3.8安装mysqlclient
View的位置参数及其Scroller类的理解
x和y是View左上角的坐标,translationX和translationY是View左上角相对于容器的偏移量。这几个参数都是相对于父容器的坐标。
1025645
2018/08/23
6170
多说单点登录(SSO)介绍(解决缺少client_id参数)
多说是目前用的最广泛的一个社会化插件,同时也支持各主流网站的单点登录。官方有详细的开发文档: http://dev.duoshuo.com/docs/5023323ce9b7bde608000012
飞奔去旅行
2019/06/13
1.5K0
多说单点登录(SSO)介绍(解决缺少client_id参数)
【JMeter】参数Parameters和Body Data
在做接口并发测试的时候,才发现Jmeter中的Parameters和Body Data两种参数格式并不是简单的一个是xx=xx,另外一个是json格式的参数
全栈程序员站长
2022/09/12
1.3K0
【JMeter】参数Parameters和Body Data
PYTHON 中的__init__()方
在类定义时,self和__init__会时常用到。 self 参数,它在所有的方法声明中都存在。它代表实例对象本身,当你用实例调用方法时,由解释器悄悄地传递给方法的,所以,你不需要自己传递self 进来,因为它是自动传入的。
py3study
2020/01/07
5580
dh参数建模_data vault 建模
DH法一般用一次就丢,然后后面再需要用的时候就会忘,所以本文整理了DH建模法,方便需要使用的时候进行参考。这里不讲原理,只讲结论和方法
全栈程序员站长
2022/09/29
5340
dh参数建模_data vault 建模
Oracle Data Guard 重要配置参数
    Oracle Data Guard主要是通过为生产数据库提供一个或多个备用数据库(是产生数据库的一个副本),以保证在主库不可用或异常时数据不丢失并通过备用数据库继续提供服务。对于Oracle DG的配置,我们可以通过Grid Control来完成,也可以通过Data Guard Broker以及SQL*Plus来完成。对于前两者方式可以在图形界面上完成,操作简单。而对于使用SQL*Plus命令行方式,我们需要进行大量的配置,尤其是这其中的一些参数。本文主要描述配置Oracle Data Guard 的重要参数。下面关于Data Guard简称为DG。
Leshami
2018/08/13
1K0
python 函数编程的位置参数、默认参数、关键字参数以及函数的递归
首先对于函数调用: !usr/bin/env python _*_ coding:utf-8 _*_ def AQA(INPUT): if INPUT=='hello world': #在输入正确的情况下,不想让其调用hello_again()函数, #法一: 可利用返回值(return)进行判断 #法二:可将函数放在else下执行 print('你好,世界') return 'right' else:
学到老
2018/03/19
1.2K0
python  函数编程的位置参数、默认参数、关键字参数以及函数的递归
三维世界中相机的位置参数
上篇文章带读者完成了一个3d弹弹球的加强版,读者顺便了解了下灯光和阴影的基本用法,关于相机的位置参数问题,我们在前文只是简单提过,本篇文章,想和读者分享下相机的位置参数问题。
江南一点雨
2019/03/07
1.4K0
mysql性能优化(四) mysql修改data存放位置
mysql性能优化(四) mysql修改data存放位置
Java架构师必看
2021/05/27
2.4K0
mysql性能优化(四) mysql修改data存放位置

相似问题

TypeError:__init__()缺少一个必需的位置参数:'data‘

110

Django - __init__()缺少一个必需的位置参数:'request‘

16

__init__()缺少一个必需的位置参数

60

__init__()缺少一个必需的位置参数:'self‘

41

TypeError:__init__()缺少一个必需的位置参数

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文