问题:

  如果判断一个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':''}
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中有没有数据、它并不关心数据能不能通过校验。

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

django form 对象is_bound属性的更多相关文章

  1. js进阶-9-3/4 form对象有哪些常用属性

    js进阶-9-3/4 form对象有哪些常用属性 一.总结 一句话总结: 1.一般html标签有哪些常用属性:name id value 2.form对象有哪些常用属性(特有):action meth ...

  2. 获取form对象

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  3. Form 对象的集合

    <html> <body id="myBody" class="myBody"> <form id="myForm&qu ...

  4. JavaScript Image对象 / Tabel对象 / Select对象 / Form对象

    JavaScript Image / Tabel / Select / Form 对象 版权声明:未经授权,严禁转载! Image 对象 Image 对象,代表 <img> 元素. < ...

  5. Django---CBV和FBV的使用,CBV的流程,给视图加装饰器,Request对象方法,属性和Response对象,form表单的上传

    Django---CBV和FBV的使用,CBV的流程,给视图加装饰器,Request请求对象方法,属性和Response响应对象,form表单的上传 一丶CBV和FBV       在Django中存 ...

  6. Extjs在form展示后台单个对象的属性

    目的:写一个按钮事件,点击时弹出一个win窗体,里面镶嵌form表单,并且展示后台单个对象的属性 先来后台: public void find(){ String clientId = request ...

  7. Django Form的学习

    django.forms 是Django处理form的库      本质上可以直接通过对HttpRequest达到同样的效果,但是django.from带来更便捷的处理方式.功能有几点 通过form类 ...

  8. django Form表单的使用

    Form django表单系统中,所有的表单类都作为django.forms.Form的子类创建,包括ModelForm 关于django的表单系统,主要分两种 基于django.forms.Form ...

  9. django form表单验证

    一. django form表单验证引入 有时时候我们需要使用get,post,put等方式在前台HTML页面提交一些数据到后台处理例 ; <!DOCTYPE html> <html ...

随机推荐

  1. form表单提交,Servlet接收并读取Excel文件

    首先是jsp页面: <body scroll=no style="overflow-y:hidden;" onselectstart="return false&q ...

  2. 〖Linux〗tmux 配置文件

    tmux中默认的shell是zsh,zsh在日常中使用可以协助我们高效地使用shell命令. 配置文件默认位置 ~/.tmux.conf,此外,把常用快捷键也附录在这里,方便记忆. # 设置Shell ...

  3. 【Shell】Linux的判断表达式:-d,-f,-e等

    文件比较运算符 表达式         说明                            案例 -e filename    如果filename存在,则为真        [ –e /et ...

  4. 5、redis之使用spring集成commons-pool

    添加spring的依赖 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://w ...

  5. 如何取消Excel中的自动超链接

    步骤:文件按钮→Excel选项-校对-自动更正选项→键入时自动套用格式→Internet及网络路径替换为超链接,对其不要勾选即可.

  6. 【转】UIAutomator源码分析之启动和运行

    我们可以看到UiAutomator其实就是使用了UiAutomation这个新框架,通过调用AccessibilitService APIs来获取窗口界面控件信息已经注入用户行为事件,那么今天开始我们 ...

  7. 【linux环境】Linux环境 php连接oracle11g数据库(相关插件已备份至U盘)

    1.环境:centos6 . LNMP(linux环境都可以,跟服务器没啥大关系) 2.前期准备:弄清楚 项目php的运行目录,php.ini的配置目录,php-config的运行目录 3.安装先知: ...

  8. Gson转换json数据为对象

    可以通过Gson使用两种方法,将json字符串转换为对象,以下面该段报文做测试 { "id": 84041462, "lastName": "小华&q ...

  9. ios中webview的高级用法

    .隐藏上下滚动时出边界的后面的黑色的阴影 - (void) hideGradientBackground:(UIView*)theView { for (UIView * subview in the ...

  10. webview中事件的用法

    封装 MBProgressHud ==================================== #import "MBProgressHUD.h" @interface ...