如何在 Django 服务器端验证后在客户端显示错误

How to show a error on client side after validation on server side in django

我是 django 的新手。我想在进行服务器端验证时,根据现有数据库中的所有值检查用户在我的网页中输入的价格值输入值。
我正在使用 Django 表单。我的数据库有名为“名称”和“价格”的字段。如果用户输入的价格值大于我数据库中所有现有的价格值,我想将用户输入添加到数据库中。否则我想在客户端显示错误,例如“输入更大的值”。
这是我到目前为止想出的。

这是我在 views.py

中的表格
class myform (forms.Form):
    name = forms.CharField(max_length = 200)
    price= forms.IntegerField( validators = [MinValueValidator(0,0)], widget=forms.NumberInput(attrs={'min' : 0}))

我正在尝试在这里验证它

    def add_item (request):
        if request.method == "POST":
            max_price = items.objects.order_by("-price").first().price
            if request.POST["price"] < max_price:
                return render(request,"myapp/items.html")
            else:
                items.objects.create(name = request.POST["name"] , price = request.POST["price"]) 
                return render(request,"myapp/index.html")

我尝试使用验证器在客户端显示消息,但没有成功。因为我不知道如何在验证方法中使用数据库条目来引发验证错误。

我相信您可以使用 'AJAX' 调用来验证服务器端的价格(无需提交表格),如果价格不符合您的要求,您可以 return 错误说 'please enter a new value' .

此外,由于您没有提供任何类型的 html 输入,我建议您使用我们掌握的最少知识禁用按钮(默认情况下),该按钮在验证之前提交表单完成后,这可以借助 ajax 调用

中的变量 return 来完成

参考link:https://simpleisbetterthancomplex.com/tutorial/2016/08/29/how-to-work-with-ajax-request-with-django.html

简化步骤:

1.Disable默认提交按钮

2.Createajax来电

3.Validate ajax调用,如果价格满足条件,则启用提交按钮

4.Submit 表格并在您的数据库中输入新价格

示例 Ajax 调用:

$.ajax(
    {
        url: "/your_url_for_ajax_function",
        data:{
                 price: priceinput            //priceinput is the value which 
                                                you get from the input field
        },
        success: function( data ) 
        {
            //Add the error part over here , and enable the submit button
        }
     })

此外,我还建议单独为 ajax 调用创建另一个 views.py(具有不同的名称),否则您的主 views.py 可能会变得非常长并且函数可能会非常长很难找到(顺便说一句,在同一个视图中使用不同种类的函数没有问题,这个技巧只是为了便于搜索和编辑,在线下)

你也可以在 youtube 上搜索几个视频,因为 link 似乎很难理解

祝你好运!