type str 不定义 __round__ 方法/如何获取 表单字段 ? django 和 cropper.js?

2024-09-28 20:54:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个Django表单,用户可以上传图像,有时只裁剪其中的部分,所以我使用croper javascript来获取坐标,但问题是接收到的数据被当作字符串处理

下面是我如何获取表单的数据

  /* SCRIPT TO COLLECT THE DATA AND POST TO THE SERVER */
  $(".js-crop-and-upload").click(function () {
    var cropData = $image.cropper("getData");
    $("#id_x").val(cropData["x"]);
    $("#id_y").val(cropData["y"]);
    $("#id_height").val(cropData["height"]);
    $("#id_width").val(cropData["width"]);
    $("#formUpload").submit();
  });

你知道吗表单.py你知道吗

class ImageForm(ModelForm):
    x = forms.FloatField(widget=forms.HiddenInput())
    y = forms.FloatField(widget=forms.HiddenInput())
    width = forms.FloatField(widget=forms.HiddenInput())
    height = forms.FloatField(widget=forms.HiddenInput())

    class Meta:
        model = UploadedImages
        fields = ('pre_analysed', 'x', 'y', 'width', 'height', )

这就是我从表格中获取数据的方式

if form.is_valid():
   image = form.save(commit=False)
   x = request.POST.get('x')
   y = request.POST.get('y')
   w = request.POST.get('width')
   h = request.POST.get('height')

但它总是返回这个错误

type str doesn't define round method

所以我得到的是,我把数据作为字符串而不是浮点数抓取,因为它保存在表单feild中,所以我如何才能正确地抓取数据?你知道吗


Tags: 数据字符串id表单getrequestformsval
1条回答
网友
1楼 · 发布于 2024-09-28 20:54:11

根据[DjangoProject.Docs]: Request and response objects - QueryDict objects(即HttpRequest.POST),请求属性存储为字符串。
您应该将它们转换为浮点数:

x = float(request.POST.get('x'))
y = float(request.POST.get('y'))
w = float(request.POST.get('width'))
h = float(request.POST.get('height'))

相关问题 更多 >