IIssNan
|
2.0/chapter07/#329 |
2009-11-13 10:53:35
|
我们可以手动地将原来的提交数据返回给模板,并且必须编辑HTML里的各字段来填充原来的值。
|
|
IIssNan
|
2.0/chapter07/#328 |
2009-11-13 10:51:50
|
另外一个问题是表单的重新显示。若数据验证失败后,返回客户端的表单中各字段最好是填有原来提交的数据,以便用户查看哪里出现错误(用户也不需再次填写正确的字段值)。
|
|
IIssNan
|
2.0/chapter07/#326 |
2009-11-13 10:48:41
|
想象一下假如一个表单包含一打字段,我们真的将必须去编写每个域对应的if判断语句?
|
|
IIssNan
|
2.0/chapter07/#325 |
2009-11-13 10:46:45
|
contact()视图可以正常工作,但是她的验证功能有些复杂。
|
|
iaml
|
2.0/chapter05/#505 |
2009-11-12 22:30:17
|
当你在Python中处理Unicode对象的时候,你可以直接将它们混合使用和互相匹配而不必去考虑编码细节。
|
|
iaml
|
2.0/chapter05/#504 |
2009-11-12 22:23:56
|
但是Unicode对象并没有编码。它们使用Unicode,一个一致的,通用的字符编码集。
|
|
iaml
|
2.0/chapter05/#214 |
2009-11-12 20:53:43
|
You haven't set the
DATABASE_ENGINE
setting yet.
|
|
iaml
|
2.0/chapter05/#214 |
2009-11-12 20:51:41
|
你还没有设置DATABASE_ENGINE。
|
|
Suninny
|
2.0/chapter05/#159 |
2009-11-12 12:33:30
|
<literal>cx_Oracle</literal> ,
<reference name="http://www.djangoproject.com/r/python-oracle/" refuri="http://www.djangoproject.com/r/python-oracle/">http://www.djangoproject.com/r/python-oracle/</reference>.
|
|
Suninny
|
2.0/chapter05/#155 |
2009-11-12 12:33:16
|
<literal>oracle</literal> |
|
Suninny
|
2.0/chapter05/#153 |
2009-11-12 12:32:59
|
否则就使用 <literal>pysqlite</literal> ,
<reference name="http://www.djangoproject.com/r/python-sqlite/" refuri="http://www.djangoproject.com/r/python-sqlite/">http://www.djangoproject.com/r/python-sqlite/</reference>。
|
|
Suninny
|
2.0/chapter05/#148 |
2009-11-12 12:31:04
|
<literal>sqlite3</literal> |
|
Suninny
|
2.0/chapter05/#146 |
2009-11-12 12:30:49
|
<literal>MySQLdb</literal> ,
<reference name="http://www.djangoproject.com/r/python-mysql/" refuri="http://www.djangoproject.com/r/python-mysql/">http://www.djangoproject.com/r/python-mysql/</reference>.
|
|
Suninny
|
2.0/chapter05/#142 |
2009-11-12 12:30:33
|
<literal>mysql</literal> |
|
Suninny
|
2.0/chapter05/#134 |
2009-11-12 12:30:10
|
<literal>psycopg</literal> 1.x版,
<reference name="http://www.djangoproject.com/r/python-pgsql/1/" refuri="http://www.djangoproject.com/r/python-pgsql/1/">http://www.djangoproject.com/r/python-pgsql/1/</reference>。
|
|
Suninny
|
2.0/chapter05/#140 |
2009-11-12 12:29:33
|
<literal>psycopg</literal> 2.x版,
<reference name="http://www.djangoproject.com/r/python-pgsql/" refuri="http://www.djangoproject.com/r/python-pgsql/">http://www.djangoproject.com/r/python-pgsql/</reference>。
|
|
|
2.0/chapter05/#140 |
2009-11-12 12:28:04
|
<literal>psycopg</literal> version 2.x,
<reference name="http://www.djangoproject.com/r/python-pgsql/" refuri="http://www.djangoproject.com/r/python-pgsql/">http://www.djangoproject.com/r/python-pgsql/</reference>.
|
|
|
2.0/chapter05/#136 |
2009-11-12 12:27:46
|
<literal>postgresql_psycopg2</literal> |
|
|
2.0/chapter05/#136 |
2009-11-12 12:27:27
|
<literal>postgresql_psycopg2<2> |
|
|
2.0/chapter05/#134 |
2009-11-12 12:27:07
|
<literal>psycopg</literal> version 1.x,
<reference name="http://www.djangoproject.com/r/python-pgsql/1/" refuri="http://www.djangoproject.com/r/python-pgsql/1/">http://www.djangoproject.com/r/python-pgsql/1/</reference>.
|
|
|
2.0/chapter05/#130 |
2009-11-12 12:26:39
|
<literal> postgresql</literal> |
|
Suninny
|
2.0/chapter05/#130 |
2009-11-12 12:26:22
|
<literal>postgresql<2> |
|
15325@qq.com
|
2.0/chapter06/#285 |
2009-11-12 12:26:09
|
迄今为止,我们做的<literal>blank=True</literal>、<literal>null=True</literal>和<literal>verbose_name</literal>修改其实是模块级别,而不是管理级别的。
|
|
|
2.0/chapter05/#130 |
2009-11-12 12:26:08
|
<literal>postgresql<2> |
|
15325@qq.com
|
2.0/chapter06/#283 |
2009-11-12 12:22:32
|
自定义ModelAdmi类
|
|
15325@qq.com
|
2.0/chapter06/#281 |
2009-11-12 12:20:58
|
那种情形,必须显式使用<literal>verbose_name</literal>这个参数名称。
|
|
15325@qq.com
|
2.0/chapter06/#280 |
2009-11-12 12:19:37
|
但这不适用于<literal>ManyToManyField</literal> 和<literal>ForeignKey</literal>字段,因为它们第一个参数必须是模块类。
|
|
15325@qq.com
|
2.0/chapter06/#277 |
2009-11-12 12:17:42
|
这个例子与上面那个的效果相同。
|
|
15325@qq.com
|
2.0/chapter06/#277 |
2009-11-12 12:16:51
|
这个例子的效果与上面那个相同。
|
|
15325@qq.com
|
2.0/chapter06/#276 |
2009-11-12 12:16:01
|
最后还需注意的是,为了使语法简洁,你可以把它当作固定位置的参数传递。
|
|
15325@qq.com
|
2.0/chapter06/#274 |
2009-11-12 12:13:31
|
请注意,你不必把<literal>verbose_name</literal>的首字母大写,除非是连续大写(如:<literal>"USA state"</literal>)。Django会自动适时将首字母大写,并且在其它不需要大写的地方使用<literal>verbose_name</literal>的精确值。
|
|
15325@qq.com
|
2.0/chapter06/#272 |
2009-11-12 12:02:04
|
修改后重启服务器,你会在author编辑页面中看到这个新标签。
|
|
15325@qq.com
|
2.0/chapter06/#269 |
2009-11-12 12:00:10
|
举个例子,说明如何将<literal>Author.email</literal>的标签改为e-mail,中间有个横线。
|
|
15325@qq.com
|
2.0/chapter06/#269 |
2009-11-12 11:59:31
|
举个例子,说明如何将<literal>Author.email</literal>的标签改为e-mail,并且带超链接。
|
|
15325@qq.com
|
2.0/chapter06/#267 |
2009-11-12 11:57:13
|
你只需在模块中指定<literal>verbose_name</literal>。
|
|
15325@qq.com
|
2.0/chapter06/#266 |
2009-11-12 11:55:56
|
然而,字段名称并不总是贴切的。有些情况下,你可能想自定义一个标签。
|
|
15325@qq.com
|
2.0/chapter06/#264 |
2009-11-12 11:47:56
|
用空格替换下划线;首字母大写。例如:<literal>Book</literal>模块中<literal>publication_date</literal>的标签是Publication date。
|
|
15325@qq.com
|
2.0/chapter06/#263 |
2009-11-12 11:41:14
|
规则很简单:
|
|
15325@qq.com
|
2.0/chapter06/#263 |
2009-11-12 11:40:50
|
算法很简单:
|
|
15325@qq.com
|
2.0/chapter06/#262 |
2009-11-12 11:40:25
|
在编辑页面中,每个字段的标签都是从模块的字段名称生成的。
|
|
15325@qq.com
|
2.0/chapter06/#260 |
2009-11-12 11:34:02
|
自定义字段标签
|
|
15325@qq.com
|
2.0/chapter06/#258 |
2009-11-12 11:29:45
|
现在让我们回到管理工具,添加book的编辑页面允许输入一个空的publication date。
|
|
IIssNan
|
2.0/chapter07/#335 |
2009-11-12 11:26:01
|
第一个Form类
|
|
15325@qq.com
|
2.0/chapter06/#256 |
2009-11-12 11:25:27
|
我们将在第十章详细讲述数据库结构更改。
|
|
15325@qq.com
|
2.0/chapter06/#254 |
2009-11-12 11:24:09
|
(注意:以下SQL语法是PostgreSQL特有的。)
|
|
15325@qq.com
|
2.0/chapter06/#250 |
2009-11-12 11:22:46
|
像先前那样,你可以使用<literal>manage.py dbshell</literal>进入数据库服务环境。
|
|
15325@qq.com
|
2.0/chapter06/#249 |
2009-11-12 11:18:35
|
出于某种原因,Django不会尝试自动更新数据库结构。所以你必须执行<literal>ALTER TABLE</literal>语句将模块的改动更新至数据库。
|
|
15325@qq.com
|
2.0/chapter06/#247 |
2009-11-12 11:12:56
|
要完成这些改动,我们还需要更新数据库。
|
|
15325@qq.com
|
2.0/chapter06/#246 |
2009-11-12 11:12:25
|
添加<literal>null=True</literal>比添加<literal>blank=True</literal>复杂。因为<literal>null=True</literal>改变了数据的语义,即改变了<literal>CREATE TABLE</literal>语句,把<literal>publication_date</literal>字段上的<literal>NOT NULL</literal>删除了。
|
|
15325@qq.com
|
2.0/chapter06/#243 |
2009-11-12 11:07:47
|
为了举例说明,让我们把<literal>Book</literal>模块修改成允许
<literal>publication_date</literal>为空。修改后的代码如下:
|
|