IIssNan
|
2.0/chapter07/#257 |
2009-11-12 09:37:39
|
问题的实质在于我们只使用来一个布尔类型的变量来检测是否出错,而不是使用一个列表来记录相应的错误信息。我们需要做如下的调整:
|
|
IIssNan
|
2.0/chapter07/#255 |
2009-11-12 09:35:20
|
所以,提示信息必须是详细的,明确的,不会产生疑议。
|
|
IIssNan
|
2.0/chapter07/#254 |
2009-11-12 09:34:45
|
提交一个空表单怎么会出现一个关于20个字符限制的提示?
|
|
IIssNan
|
2.0/chapter07/#253 |
2009-11-12 09:33:53
|
我们包含万象的提示信息很容易使人产生困惑:
|
|
IIssNan
|
2.0/chapter07/#252 |
2009-11-12 09:30:44
|
但像这样修改之后仍有一些问题。
|
|
IIssNan
|
2.0/chapter07/#249 |
2009-11-12 09:29:42
|
所以我们需要更精确的提示信息:
|
|
IIssNan
|
2.0/chapter07/#248 |
2009-11-12 09:29:33
|
但是,search_form.html里的这条提示信息是:"Please submit a search term.",这显然是错误的,
|
|
IIssNan
|
2.0/chapter07/#248 |
2009-11-12 09:27:39
|
但是,search_form.html里的这条提示信息是:"Please submit a search term.",这显然是错误的,所以我们需要更精确的提示信息:
|
|
IIssNan
|
2.0/chapter07/#247 |
2009-11-12 09:25:26
|
现在,如果尝试着提交一个超过20个字符的搜索关键词,系统不会执行搜索操作,而是显示一条错误提示信息。
|
|
IIssNan
|
2.0/chapter07/#244 |
2009-11-12 09:24:15
|
最简单的方式就是将逻辑处理直接嵌入到视图里,就像这样:
|
|
IIssNan
|
2.0/chapter07/#243 |
2009-11-12 09:23:41
|
(为来让例子更为显著,我们假设如果关键词超过20个字符将导致查询十分缓慢)。那么该如何实现呢?
|
|
IIssNan
|
2.0/chapter07/#242 |
2009-11-12 09:22:26
|
我们来调整一下search()视图,让她能够验证搜索关键词是否小于或等于20个字符。
|
|
IIssNan
|
2.0/chapter07/#240 |
2009-11-12 09:19:45
|
JavaScript验证可以看作是额外的功能,但不能作为唯一的验证功能。
|
|
IIssNan
|
2.0/chapter07/#239 |
2009-11-12 09:18:05
|
除了在服务器端对用户提交的数据进行验证(例如在视图里验证),我们没有其他办法。
|
|
IIssNan
|
2.0/chapter07/#237 |
2009-11-12 09:16:15
|
因为有些用户会将JavaScript关闭掉,并且还有一些怀有恶意的用户会尝试提交非法的数据来探测是否有可以攻击的机会。
|
|
IIssNan
|
2.0/chapter07/#236 |
2009-11-12 09:14:18
|
即使在客户端已经做了验证,但是服务器端仍必须再验证一次。
|
|
IIssNan
|
2.0/chapter07/#235 |
2009-11-12 09:13:26
|
要注意:
|
|
IIssNan
|
2.0/chapter07/#234 |
2009-11-12 09:13:13
|
可以使用Javascript在客户端浏览器里对数据进行验证,这些知识已超出本书范围。
|
|
IIssNan
|
2.0/chapter07/#274 |
2009-11-11 17:26:30
|
我们从contact_form.html模板入手:
|
|
IIssNan
|
2.0/chapter07/#264 |
2009-11-11 17:25:30
|
编写Contact表单
|
|
IIssNan
|
2.0/chapter07/#232 |
2009-11-11 17:24:16
|
关于JavaScript验证
|
|
IIssNan
|
2.0/chapter07/#230 |
2009-11-11 17:23:59
|
请输入8位数以上并至少包含一个数字的密码。
|
|
IIssNan
|
2.0/chapter07/#228 |
2009-11-11 17:23:19
|
请输入YYYY-MM-DD格式的日期。
|
|
IIssNan
|
2.0/chapter07/#226 |
2009-11-11 17:22:45
|
123并非是一个有效的邮政编码。
|
|
IIssNan
|
2.0/chapter07/#225 |
2009-11-11 17:22:13
|
邮政编码,
|
|
IIssNan
|
2.0/chapter07/#224 |
2009-11-11 17:22:03
|
请输入5位数的U.S
|
|
IIssNan
|
2.0/chapter07/#224 |
2009-11-11 17:21:37
|
请输入5位数的U.S邮政编码,
|
|
IIssNan
|
2.0/chapter07/#222 |
2009-11-11 17:20:40
|
foo' 并不是一个有效的e-mail地址。
|
|
IIssNan
|
2.0/chapter07/#221 |
2009-11-11 17:20:06
|
请输入一个有效的email地址,
|
|
IIssNan
|
2.0/chapter07/#219 |
2009-11-11 17:17:47
|
我们都有在网站上见过类似以下的错误提示信息:
|
|
IIssNan
|
2.0/chapter07/#218 |
2009-11-11 17:16:45
|
然后许多HTML表单包含着比检测值是否为空更为复杂的验证。
|
|
IIssNan
|
2.0/chapter07/#217 |
2009-11-11 17:15:37
|
我们的搜索示例仍然相当地简单,特别从数据验证方面来讲;我们仅仅只验证搜索关键值是否为空。
|
|
IIssNan
|
2.0/chapter07/#215 |
2009-11-11 17:14:28
|
简单的验证
|
|
IIssNan
|
2.0/chapter07/#212 |
2009-11-11 17:14:09
|
action=""意味着表单将提交给与当前页面相同的URL。
|
|
IIssNan
|
2.0/chapter07/#172 |
2009-11-11 17:03:18
|
改进表单
|
|
15325@qq.com
|
2.0/chapter06/#233 |
2009-11-11 16:03:45
|
但是,其它数据类型有例外:日期型、时间型和数字型字段不接受空字符串。
|
意译
|
15325@qq.com
|
2.0/chapter06/#231 |
2009-11-11 16:00:44
|
而且它可以和Django的其它部分工作得很好。如在管理工具中,如果你留空一个字符型字段,它会为此插入一个空字符串(而<emphasis> 不是</emphasis><literal>NULL</literal>)。
|
|
15325@qq.com
|
2.0/chapter06/#230 |
2009-11-11 15:57:07
|
在大多数情况下,这种默认的行为对你的应用程序来说是最佳的,因为它可以使你不再因数据一致性而头痛。
|
|
15325@qq.com
|
2.0/chapter06/#227 |
2009-11-11 15:54:16
|
这里有个第五章中生成<literal>Author</literal>模块的例子:
|
|
15325@qq.com
|
2.0/chapter06/#227 |
2009-11-11 15:53:48
|
这里有个第五章中用过的例子:
|
|
15325@qq.com
|
2.0/chapter06/#226 |
2009-11-11 15:52:54
|
为了消除歧义,Django生成<literal>CREATE TABLE</literal>语句自动为每个字段显式加上<literal>NOT NULL</literal>。
|
|
15325@qq.com
|
2.0/chapter06/#223 |
2009-11-11 15:49:51
|
还有:
|
|
15325@qq.com
|
2.0/chapter06/#224 |
2009-11-11 15:49:25
|
我怎样才能得到全部拥有空值的记录,应该按<literal>NULL</literal>和空字符串查找么?还是仅按字符串查找?
|
|
15325@qq.com
|
2.0/chapter06/#223 |
2009-11-11 15:46:14
|
并且:
|
|
15325@qq.com
|
2.0/chapter06/#222 |
2009-11-11 15:45:38
|
它们之间有区别,还是数据输入不一致?
|
|
IIssNan
|
2.0/chapter07/#209 |
2009-11-11 15:45:04
|
现在改成这样:
|
|
15325@qq.com
|
2.0/chapter06/#221 |
2009-11-11 15:44:48
|
为什么这条记录有个<literal>NULL</literal>,而那条记录却有个空字符串?
|
|
IIssNan
|
2.0/chapter07/#206 |
2009-11-11 15:44:48
|
原先的代码是这样:
|
|
IIssNan
|
2.0/chapter07/#205 |
2009-11-11 15:44:28
|
既然已经将两个视图与URLs合并起来,/search/视图管理着表单的显示以及结果的显示,那么在search_form.html里表单的action值就没有必要硬编码的指定URL。
|
|
15325@qq.com
|
2.0/chapter06/#220 |
2009-11-11 15:43:38
|
这会引起不必要的歧义或疑惑。
|
|