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中有没有数据、它并不关心数据能不能通过校验。

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

  • 相关阅读:
    iframe嵌套
    fiddler——一款莱斯的抓包工具
    工程代码规范和更新规范
    新项目新工作空间新仓库新setting文件
    quartz-job实现实时或定时发送短信任务
    quartz-job实现定时任务配置
    quartz开源作业调度框架的配置
    Confluence 6 让一个空间可以公众访问
    Confluence 6 管理和恢复空间管理权限
    Confluence 6 指派和撤销空间权限
  • 原文地址:https://www.cnblogs.com/JiangLe/p/8634461.html
Copyright © 2011-2022 走看看