Changelog

全名 (Ascending) Unsort 页面 提交时间 (Descending) Unsort 内容 注释 ...
15325@qq.com 2.0/chapter07/#403 2009-11-23 14:20:12 在视图中使用Form
15325@qq.com 2.0/chapter07/#401 2009-11-23 13:19:12 我们的contact form只涉及字符串类型,它们会被清理成Unicode对象。如果我们使用整数型或日期型,form框架会确保方法使用合适的Python整数型或<literal>datetime.date</literal>型对象。
15325@qq.com 2.0/chapter07/#398 2009-11-23 12:27:03 Django的form框架不但校验数据,它还会把它们转换成相应的Python类型数据,这叫做清理数据。
15325@qq.com 2.0/chapter07/#398 2009-11-23 12:26:52 Django的form框架不但校验数据,他还会把它们转换成相应的Python类型数据,这叫做清理数据。
15325@qq.com 2.0/chapter07/#396 2009-11-23 12:23:34 最终,如果一个<literal>Form</literal>实体的数据是合法的,它就会有一个可用的<literal>cleaned_data</literal>属性。
15325@qq.com 2.0/chapter07/#397 2009-11-23 12:22:24 这是一个包含干净的提交数据的字典。
15325@qq.com 2.0/chapter07/#393 2009-11-23 12:20:46 每一个邦定<literal>Form</literal>实体都有一个<literal>errors</literal>属性,它为你提供了一个字段与错误消息相映射的字典表。
15325@qq.com 2.0/chapter07/#390 2009-11-23 12:17:45 你可以逐一查看每个字段的出错消息:
15325@qq.com 2.0/chapter07/#387 2009-11-23 12:16:05 但是,如果留空<literal>subject</literal><literal>message</literal>,整个<literal>Form</literal>就不再合法了:
15325@qq.com 2.0/chapter07/#384 2009-11-23 12:15:07 如果我们不传入<literal>email</literal>值,它依然是合法的。因为我们指定这个字段的属性<literal>required=False</literal>
15325@qq.com 2.0/chapter07/#381 2009-11-23 12:13:36 我们已经为每个字段传入了值,因此整个<literal>Form</literal>是合法的:
15325@qq.com 2.0/chapter07/#380 2009-11-23 12:11:45 调用任何绑定form的<literal>is_valid()</literal>方法,就可以知道它的数据是否合法。
15325@qq.com 2.0/chapter07/#377 2009-11-23 12:09:34 一旦你对一个<literal>Form</literal>实体赋值,你就得到了一个绑定form:
15325@qq.com 2.0/chapter07/#374 2009-11-23 12:08:08 为了校验数据,我们创建一个新的对<literal>Form</literal>象,并且传入一个与定义匹配的字典类型数据:
15325@qq.com 2.0/chapter07/#373 2009-11-23 12:04:32 <literal>Form</literal>对象做的第二件事是校验数据。
15325@qq.com 2.0/chapter07/#358 2009-11-23 12:03:57 它做的第一件事是将自己显示成HTML:
15325@qq.com 2.0/chapter07/#358 2009-11-23 12:02:10 首先,它将自己显示成HTML:
15325@qq.com 2.0/chapter07/#370 2009-11-23 12:00:49 你同样可以用HTML显示个别字段:
15325@qq.com 2.0/chapter07/#370 2009-11-23 12:00:33 你同样可以用HTML显示个别字段。
15325@qq.com 2.0/chapter07/#369 2009-11-23 11:59:42 这些类方法只是一般情况下用于快捷显示完整表单的方法。
15325@qq.com 2.0/chapter07/#367 2009-11-23 11:57:03 请注意,标签<table>、<ul>、<form>的开闭合标记没有包含于输出当中,这样你就可以添加额外的行或者自定义格式。
15325@qq.com 2.0/chapter07/#364 2009-11-23 11:51:54 默认输出按照HTML的<<literal> table</literal> >格式,另外有一些其它格式的输出:
15325@qq.com 2.0/chapter07/#362 2009-11-23 11:47:04 这个做法使默认行为尽可能合适。
15325@qq.com 2.0/chapter06/#43 2009-11-18 11:46:13 保证<literal>INSTALLED_APPS</literal>中包含<literal>'django.contrib.auth'</literal><literal>'django.contrib.contenttypes'</literal><literal>'django.contrib.sessions'</literal>,Django的管理工具需要这3个包。
15325@qq.com 2.0/chapter07/#361 2009-11-17 16:37:24 为了便于访问,Django用<literal> <label></literal> 标志,为每一个字段添加了标签。
15325@qq.com 2.0/chapter07/#358 2009-11-17 16:34:08 它做的第一件事是将自己显示成HTML:
15325@qq.com 2.0/chapter07/#357 2009-11-17 16:33:26 让我们钻研到Python解释器里面看看这个类做了些什么。
15325@qq.com 2.0/chapter07/#355 2009-11-17 16:32:12 每一个字段都默认是必填。要使<literal>email</literal>成为可选项,我们需要指定<literal>required=False</literal>
15325@qq.com 2.0/chapter07/#354 2009-11-17 16:26:57 表单中的每一个字段(域)作为<literal>Form</literal>类的属性,被展现成<literal>Field</literal>类。这里只用到<literal>CharField</literal><literal>EmailField</literal>类型。
15325@qq.com 2.0/chapter07/#353 2009-11-17 16:22:34 这看上去简单易懂,并且很像在模块中使用的语法。
15325@qq.com 2.0/chapter07/#350 2009-11-17 16:21:02 这个类可以存在于任何地方,甚至直接写在<literal> views.py</literal> 文件里也行,但是社区的惯例是把<literal>Form</literal>类都放到一个文件中:<literal>forms.py</literal>。在存放<literal> views.py</literal> 的目录中,创建这个文件,然后输入:
15325@qq.com 2.0/chapter07/#348 2009-11-17 16:11:16 表单框架最主要的用法是,为每一个将要处理的HTML的<literal> <Form></literal> 定义一个<literal>Form</literal>类。
15325@qq.com 2.0/chapter07/#349 2009-11-17 16:10:18 在这个例子中,我们只有一个<literal> <Form></literal> ,因此我们只需定义一个<literal>Form</literal>类。
15325@qq.com 2.0/chapter07/#348 2009-11-17 16:07:27 表单框架最主要的用法是,为每一个将要处理的HTML<literal><Form></literal> 定义一个<literal>Form</literal>类。
15325@qq.com 2.0/chapter07/#348 2009-11-17 16:06:45 表单框架最主要的用法是,为每一个将要处理的HTML<literal>
</literal> 定义一个<literal>Form</literal>类。
15325@qq.com 2.0/chapter07/#346 2009-11-17 16:02:04 当Django 1.0发布时,旧版本<literal>django.forms</literal>就不再使用了,而<literal>django.newforms</literal>也终于可以名正言顺的叫做:<literal>django.forms</literal>
15325@qq.com 2.0/chapter07/#345 2009-11-17 15:59:23 当Django一次向公众发行时,它有一个复杂难懂的表单系统:<literal>django.forms</literal>。后来它被完全重写了,新的版本改叫作:<literal>django.newforms</literal>,这样人们还可以通过名称,使用旧版本。
15325@qq.com 2.0/chapter07/#344 2009-11-17 15:55:01 改名其实有历史原因的。
15325@qq.com 2.0/chapter07/#344 2009-11-17 15:54:49 改名其实是由历史原因的。
15325@qq.com 2.0/chapter07/#333 2009-11-17 15:47:18 希望你开始明白使用高级库的用意——负责处理表单及相关校验任务。
15325@qq.com 2.0/chapter07/#332 2009-11-17 15:29:27 这看起来杂乱,且写的时候容易出错。
15325@qq.com 2.0/chapter07/#312 2009-11-17 15:24:16 参见规范:<reference name="http://docs.djangoproject.com/en/dev/topics/email/" refuri="http://docs.djangoproject.com/en/dev/topics/email/">http://docs.djangoproject.com/en/dev/topics/email/</reference>
15325@qq.com 2.0/chapter07/#213 2009-11-17 15:23:07 这样修改之后,如果<literal>search()</literal>视图不指向其它页面的话,你将不必再修改<literal>action</literal>
15325@qq.com 2.0/chapter07/#149 2009-11-17 15:19:05 (如果你有兴趣了解更多关于<literal>GET</literal><literal>POST</literal>的知识,可以参见<reference name="http://www.w3.org/2001/tag/doc/whenToUseGet.html" refuri="http://www.w3.org/2001/tag/doc/whenToUseGet.html">http://www.w3.org/2001/tag/doc/whenToUseGet.html</reference>。)
15325@qq.com 2.0/chapter07/#70 2009-11-17 15:17:16 <literal>REMOTE_ADDR</literal> 客户端IP,如:<literal>"12.345.67.89"</literal> 。(如果申请是经过代理服务器的话,那么它可能是以逗号分割的多个IP地址,如:<literal>"12.345.67.89,23.456.78.90"</literal> 。)
15325@qq.com 2.0/chapter07/#66 2009-11-17 15:14:15 <literal>HTTP_USER_AGENT</literal>,用户浏览器的user-agent字符串,如果有的话。
15325@qq.com 2.0/chapter07/#64 2009-11-17 15:07:36 (请注意,它是<literal>REFERER</literal>的笔误。)
15325@qq.com 2.0/chapter07/#63 2009-11-17 15:06:34 <literal>HTTP_REFERER</literal>,进站前链接网页,如果有的话。
15325@qq.com 2.0/chapter07/#63 2009-11-17 15:06:19 进站前链接网页,如果有的话。
15325@qq.com 2.0/chapter06/#538 2009-11-16 17:02:32 <reference name="next chapter" refuri="../chapter07/"> 下一章</reference> ,我们将转入到网站开发中最重要的部分:
« < 7 8 9 10 11 12 13 > » 96 pages