Django学习笔记

1、因为URLpattern提供的是“适度但有用”级别的输入校验。万一这个视图函数被其它方式调用,我们仍需自行检查ValueError。在实现视图函数时,不臆测参数值的做法是比较好的。

 

2、模板内不允许使用负数列表索引。像{{items.-1}}这样的模板变量将会引发”TemplateSyntaxError”。

 

3、在模板方法查找过程中,如果某方法抛出一个异常,除非异常有一个silent_variable_failure属性并且值为True,否则的话它将被传播。如果异常被传播,模板里的指定变量会被设置为空字符串。

 

4、如果BankAcount对象有一个delete()方法,某个模板中包含了像{{account.delete}}这样的标签,在这个模板载入时,account对象将被删除。要防止这样的事情发生,必须设置该方法的alters_data函数属性:

def delete(self):
	# Delete the account
delete.alters_data = True

 

delete()方法不会被执行,它将静静地错误退出。

 

5、{% if %} 标签不允许在同一个标签中同时使用 and 和 or 。多次使用同一个逻辑操作符是没有问题的。没有 {% elif %} 标签。

 

6、在执行循环之前先检测列表的大小是一个通常的做法,当列表为空时输出一些特别的提示。

{% for athlete in athlete_list %}
    <p>{{ athlete.name }}</p>
{% empty %}
    <p>There are no athletes. Only computer programmers.</p>
{% endfor %}

 

7、在每个`` {% for %}``循环里有一个称为`` forloop`` 的模板变量。这个变量有一些提示循环进度信息的属性。

 

8、只有模板变量,字符串,整数和小数可以作为 {% ifequal %} 标签的参数。其他任何类型,例如Python的字典类型、列表类型、布尔类型,不能用在 {% ifequal %} 中。

 

9、模板代码注释使用 {#     #} ,用这种语法的注释不能跨越多行。如果要实现多行注释,可以使用`` {% comment %}`` 模板标签,就像这样:

{% comment %}
This is a
multi‐line comment
{% endcomment %}

 

10、按指定的格式字符串参数格式化 date 或者 datetime 对象, 范例: {{ pub_date|date:"F j, Y" }}

 

11、模板目录设置:

import os.path
TEMPLATE_DIRS = (
    os.path.join(os.path.dirname(__file__), 'templates').replace('\\','/'),
)

 

12、使用 render_to_response()

from django.shortcuts import render_to_response
import datetime
def current_datetime(request):
    now = datetime.datetime.now()
    return render_to_response('current_datetime.html', {'current_date': now})

 

13、对子模板目录树的深度没有限制,想要多少层都可以。

return render_to_response('dateapp/current_datetime.html', {'current_date': now})

 

14、include 模板标签:{% include 'nav.html' %}或者{% include "nav.html" %}

 

15、查看数据模型的SQL语句 python manage.py sqlall app1 app2  >sqlfile

 

16、设置字段可选:

字符型:email = models.EmailFeild(blank = True)

日期型、时间型和数字型:publication_date = models.DataField(blank = True, null = True)

 

17、给字段名称添加标签

email = models.EmailField('邮箱', blank = True)

特例:ManyToManyField和ForeignKey字段

authors = models.ForeignKey(Author,verbose_name = '作者')

 

18、如果你在django model里定义了instime = models.DateTimeField('注册时间', auto_now_add=True)
那么它默认会给instime字段设置一个日期时间的格式形式,
比如:2006-10-25 14:30:59这样我们在model里调用save的话,
他会自动添加到数据里去

posted @ 2012-01-10 20:40  catmelo  阅读(1363)  评论(0编辑  收藏  举报