zoukankan      html  css  js  c++  java
  • django form 对象is_bound属性

    问题:

      如果判断一个form实例中有没有数据?

    bug方法:

      通过form实例的is_valid()方法来验证

      1、Form类的定义

    class YourName(Form):
        your_name = CharField(max_length=10)

      2、template直接渲染的上下文中的msg变量

    {% extends 'learning/index.html' %}
    
    {% block container %}
    {{ msg }}
    {% endblock %}

      3、view中的代码

    def show_messsage(request):
        f = YourName()
        return render(request,'learning/message.html',context={'msg':"the form has data = {0}".format(f.is_valid())})

      查看效果

          

      可以看到页面中显示的是“the form has data = False” 看起来好像是判断正确了、但是问题并没有结束;这个“False”

      只是一个巧合。

      我们把代码改一下用来模拟一下用户的提交,假设用户提交了“12345678901234” 注意这里有14个字符。

         

      可以看到数据是有的、可能通过is_valid()是分辨不出来的。

    正确的做法:

      1、通过form对象的is_bound属性来分辨form中是否有数据

    def show_messsage(request):
        data={'your_name':'12345678901234'}
        f = YourName(data)
        return render(request,'learning/message.html',context={'msg':"the form has data = {0}".format(f.is_bound)})

      

          is_bound 当form对象中有数据时能正确判断数据是有的、而这个有与数据是否能通过校验无关。

      2、通过一个没有数据的form实例测试is_bound的效果

    def show_messsage(request):
        f = YourName()
        return render(request,'learning/message.html',context={'msg':"the form has data = {0}".format(f.is_bound)})

      

         

    总结:

      form对象的is_bound用于测试form中有没有数据、它并不关心数据能不能通过校验。

    -----------------------------------------------------------------------------------------------

  • 相关阅读:
    数据库的未来:ORM+LINQ+RX
    工具论-科学是实用工具
    事务、锁与原子性
    ORM-面向对象&关系数据库
    swift Class的内存布局
    使用phpexcel导出到xls文件的时候出现乱码解决
    苹果CMS
    js网页如何获取手机屏幕宽度
    常用正则说明
    php中的线程、进程和并发区别
  • 原文地址:https://www.cnblogs.com/JiangLe/p/8634461.html
Copyright © 2011-2022 走看看