Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 表单中的十进制值无法验证Django_Python_Django_Django Forms_Django Views - Fatal编程技术网

Python 表单中的十进制值无法验证Django

Python 表单中的十进制值无法验证Django,python,django,django-forms,django-views,Python,Django,Django Forms,Django Views,这是我的表单,我正试图向用户传递两个字符字段和两个坐标,以便将它们转换为对象。我刚刚计算出字符字段的验证,但是现在十进制字段不起作用了。有什么建议吗 from django import forms class SubmitForm(forms.Form): title = forms.CharField(max_length=100) story = forms.CharField(max_length=3000) lat = forms.DecimalField(max_digits=2

这是我的表单,我正试图向用户传递两个字符字段和两个坐标,以便将它们转换为对象。我刚刚计算出字符字段的验证,但是现在十进制字段不起作用了。有什么建议吗

from django import forms


class SubmitForm(forms.Form):
title = forms.CharField(max_length=100)
story = forms.CharField(max_length=3000)
lat = forms.DecimalField(max_digits=25, decimal_places=20)
lng = forms.DecimalField(max_digits=25, decimal_places=20)

def clean_title(self):  
    if len(self.cleaned_data['title']) < 4:
        raise forms.ValidationError("Enter your full title")
    # Always return the cleaned data
    return self.cleaned_data['title']


def clean_story(self):
    if len(self.cleaned_data['story']) < 4:
        raise forms.ValidationError("Enter your full story")
    # Always return the cleaned data
    return self.cleaned_data['story']

def clean_lng(self):
    if self.cleaned_data['lng'] == 0.0:
        raise forms.ValidationError("Enter your full story")    
    return self.cleaned_data['lng']

def clean_lat(self):
    if self.cleaned_data['lat'] == 0.0:
        raise forms.ValidationError("Enter your full story")
    # Always return the cleaned data    
    return self.cleaned_data['lat']     



def clean(self):
    cleaned_data = self.cleaned_data
    return cleaned_data
由于某些原因,每次我发送表单时都会收到此错误消息

不太清楚发生了什么。对Django来说还是很新鲜的。任何帮助都将不胜感激


编辑:我缺少的加载项冒号。错误仍然由

你在你的窗体的干净方法中的if语句之后丢失了一些冒号。

在你的窗体的干净方法中,如果你在if语句中丢失了一些冒号。

你是否考虑使用?

您可以通过使用标记模型的modelform简化代码(减少代码重复,通常创建模型的代码更少…)

供参考: 您可以将最小长度发送到CharField并免费获得len()验证:)

你是否考虑使用?

您可以通过使用标记模型的modelform简化代码(减少代码重复,通常创建模型的代码更少…)

供参考: 您可以将最小长度发送到CharField并免费获得len()验证:)

由于某些原因,每次我发送表单时都会收到此错误消息

我看不出错误! 但我试过了,效果不错

import math
class MyForm(forms.Form):
    title = forms.CharField(max_length=100, min_length=4)
    story = forms.CharField(max_length=3000, min_length=4)
    lat = forms.DecimalField(max_digits=25, decimal_places=20)
    lng = forms.DecimalField(max_digits=25, decimal_places=20)

    def clean_lat(self):
        lat = self.cleaned_data['lat']
        if math.ceil(float(lat)) <= 0:
            raise forms.ValidationError("Enter your full story")
        return self.cleaned_data['lat']

    def clean_lng(self):
        lng = self.cleaned_data['lng']
        if math.ceil(float(lng)) <= 0:
            raise forms.ValidationError("Enter your full story")
        return self.cleaned_data['lng']
导入数学
类MyForm(forms.Form):
title=forms.CharField(最大长度=100,最小长度=4)
story=forms.CharField(最大长度=3000,最小长度=4)
lat=forms.DecimalField(最大位数=25,小数位数=20)
lng=形式。小数字段(最大位数=25,小数位数=20)
def清洁板条(自):
lat=自清理的\u数据['lat']
如果数学单元(浮动(横向))
由于某些原因,每次我发送表单时都会收到此错误消息

我看不出错误! 但我试过了,效果不错

import math
class MyForm(forms.Form):
    title = forms.CharField(max_length=100, min_length=4)
    story = forms.CharField(max_length=3000, min_length=4)
    lat = forms.DecimalField(max_digits=25, decimal_places=20)
    lng = forms.DecimalField(max_digits=25, decimal_places=20)

    def clean_lat(self):
        lat = self.cleaned_data['lat']
        if math.ceil(float(lat)) <= 0:
            raise forms.ValidationError("Enter your full story")
        return self.cleaned_data['lat']

    def clean_lng(self):
        lng = self.cleaned_data['lng']
        if math.ceil(float(lng)) <= 0:
            raise forms.ValidationError("Enter your full story")
        return self.cleaned_data['lng']
导入数学
类MyForm(forms.Form):
title=forms.CharField(最大长度=100,最小长度=4)
story=forms.CharField(最大长度=3000,最小长度=4)
lat=forms.DecimalField(最大位数=25,小数位数=20)
lng=形式。小数字段(最大位数=25,小数位数=20)
def清洁板条(自):
lat=自清理的\u数据['lat']

如果math.ceil(float(lat))更改lat/lon clean方法的错误消息,那么您至少可以了解问题出在哪里。我更改了错误消息,但不知道在哪里查找它们。当表单未进行验证时,它会将我发送到另一个没有上一页数据的页面。通常,如果表单无效,您将希望呈现与表单相同的页面。您正在返回呈现的“test.html”,它在上下文中没有
表单
。在呈现之前,尝试将
form
添加到其中,根据输出表单的方式,它可能会显示验证错误。我建议重新阅读Django教程,尤其是涉及表单的教程。有很多琐碎的错误正在发生,花更多的时间研究自己的代码并与他人进行比较最终会找到解决方案。Stack Overflow是一个很好的解决问题的网站,但是开发人员仍然需要自己的坚实的调试技能。更改lat/lon clean方法的错误消息,以便您至少可以了解问题出在哪里。我更改了错误消息,但不知道在哪里查找它们。当表单未进行验证时,它会将我发送到另一个没有上一页数据的页面。通常,如果表单无效,您将希望呈现与表单相同的页面。您正在返回呈现的“test.html”,它在上下文中没有
表单
。在呈现之前,尝试将
form
添加到其中,根据输出表单的方式,它可能会显示验证错误。我建议重新阅读Django教程,尤其是涉及表单的教程。有很多琐碎的错误正在发生,花更多的时间研究自己的代码并与他人进行比较最终会找到解决方案。Stack Overflow是一个很好的解决问题的网站,但是开发人员仍然需要自己扎实的调试技能。尝试这个仍然不走运。谢谢你的尝试,但还是不走运。谢谢你的努力。
import math
class MyForm(forms.Form):
    title = forms.CharField(max_length=100, min_length=4)
    story = forms.CharField(max_length=3000, min_length=4)
    lat = forms.DecimalField(max_digits=25, decimal_places=20)
    lng = forms.DecimalField(max_digits=25, decimal_places=20)

    def clean_lat(self):
        lat = self.cleaned_data['lat']
        if math.ceil(float(lat)) <= 0:
            raise forms.ValidationError("Enter your full story")
        return self.cleaned_data['lat']

    def clean_lng(self):
        lng = self.cleaned_data['lng']
        if math.ceil(float(lng)) <= 0:
            raise forms.ValidationError("Enter your full story")
        return self.cleaned_data['lng']