django中for的用法
2011-09-18 10:09
232 查看
Django是怎么处理请求的
所有均开始于setting文件。当你运行python manage.py runserver,脚本将在于manage.py同一个目录下查找名为setting.py的文件。这个文件包含了所有有关这个Django项目的配置信息,均大写: TEMPLATE_DIRS , DATABASE_NAME , 等. 最重要的设置时ROOT_URLCONF,它将作为URLconf告诉Django在这个站点中那些Python的模块将被用到
自动创建的settings.py包含一个ROOT_URLCONF配置用来指向自动产生的urls.py. 打开文件settings.py你将看到如下:
ROOT_URLCONF = 'mysite.urls'
总结一下:
进来的请求转入/hello/.
Django通过在ROOT_URLCONF配置来决定根URLconf.(这里是'mysite1.urls')
Django在URLconf中的所有URL模式中,查找第一个匹配/hello/的条目。
如果找到匹配,将调用相应的视图函数
视图函数返回一个HttpResponse
Django转换HttpResponse为一个适合的HTTP response, 以Web page显示出来
关于for的用法
给标签增加一个 reversed 使得该列表被反向迭代:
在执行循环之前先检测列表的大小是一个通常的做法,当列表为空时输出一些特别的提示。
因为这种做法十分常见,所以`` for`` 标签支持一个可选的`` {% empty %}`` 分句,通过它我们可以定义当列表为空时的输出内容 下面的例子与之前那个等价:
在每个`` {% for %}``循环里有一个称为`` forloop`` 的模板变量。这个变量有一些提示循环进度信息的属性。
forloop.counter 总是一个表示当前循环的执行次数的整数计数器。 这个计数器是从1开始的,所以在第一次循环时
forloop.counter 将会被设置为1。
forloop.counter0
类似于 forloop.counter ,但是它是从0计数的。 第一次执行循环时这个变量会被设置为0。
forloop.revcounter 是表示循环中剩余项的整型变量。 在循环初次执行时
forloop.revcounter 将被设置为序列中项的总数。 最后一次循环执行中,这个变量将被置1。
forloop.revcounter0
类似于 forloop.revcounter ,但它以0做为结束索引。在第一次执行循环时,该变量会被置为序列的项的个数减1。
forloop.first
是一个布尔值,如果该迭代是第一次执行,那么它被置为```` 在下面的情形中这个变量是很有用的:
forloop.last 是一个布尔值;在最后一次执行循环时被置为True。 一个常见的用法是在一系列的链接之间放置管道符(|)
forloop.parentloop 是一个指向当前循环的上一级循环的
forloop 对象的引用
在一个 {% for %} 块中,已存在的变量会被移除,以避免
forloop
变量被覆盖。 Django会把这个变量移动到 forloop.parentloop 中。通常我们不用担心这个问题,但是一旦我们在模板中定义了
forloop 这个变量(当然我们反对这样做),在 {% for
%} 块中它会在 forloop.parentloop 被重新命名。
currentuser :
如果要实现多行注释,可以使用`` {% comment %}`` 模板标签,就像这样:
{% comment %}This is amulti-line comment.{% endcomment %}
所有均开始于setting文件。当你运行python manage.py runserver,脚本将在于manage.py同一个目录下查找名为setting.py的文件。这个文件包含了所有有关这个Django项目的配置信息,均大写: TEMPLATE_DIRS , DATABASE_NAME , 等. 最重要的设置时ROOT_URLCONF,它将作为URLconf告诉Django在这个站点中那些Python的模块将被用到
自动创建的settings.py包含一个ROOT_URLCONF配置用来指向自动产生的urls.py. 打开文件settings.py你将看到如下:
ROOT_URLCONF = 'mysite.urls'
总结一下:
进来的请求转入/hello/.
Django通过在ROOT_URLCONF配置来决定根URLconf.(这里是'mysite1.urls')
Django在URLconf中的所有URL模式中,查找第一个匹配/hello/的条目。
如果找到匹配,将调用相应的视图函数
视图函数返回一个HttpResponse
Django转换HttpResponse为一个适合的HTTP response, 以Web page显示出来
关于for的用法
给标签增加一个 reversed 使得该列表被反向迭代:
{% for athlete in athlete_list reversed %} ... {% endfor %}
在执行循环之前先检测列表的大小是一个通常的做法,当列表为空时输出一些特别的提示。
{% if athlete_list %}检查循环列表大小 {% for athlete in athlete_list %} <p>{{ athlete.name }}</p> {% endfor %} {% else %} <p>There are no athletes. Only computer programmers.</p> {% endif %}
因为这种做法十分常见,所以`` for`` 标签支持一个可选的`` {% empty %}`` 分句,通过它我们可以定义当列表为空时的输出内容 下面的例子与之前那个等价:
{% for athlete in athlete_list %} <p>{{ athlete.name }}</p> {% empty %} <p>There are no athletes. Only computer programmers.</p> {% endfor %}
在每个`` {% for %}``循环里有一个称为`` forloop`` 的模板变量。这个变量有一些提示循环进度信息的属性。
forloop.counter 总是一个表示当前循环的执行次数的整数计数器。 这个计数器是从1开始的,所以在第一次循环时
forloop.counter 将会被设置为1。
{% for item in todo_list %} <p>{{ forloop.counter }}: {{ item }}</p> {% endfor %}
forloop.counter0
类似于 forloop.counter ,但是它是从0计数的。 第一次执行循环时这个变量会被设置为0。
forloop.revcounter 是表示循环中剩余项的整型变量。 在循环初次执行时
forloop.revcounter 将被设置为序列中项的总数。 最后一次循环执行中,这个变量将被置1。
forloop.revcounter0
类似于 forloop.revcounter ,但它以0做为结束索引。在第一次执行循环时,该变量会被置为序列的项的个数减1。
forloop.first
是一个布尔值,如果该迭代是第一次执行,那么它被置为```` 在下面的情形中这个变量是很有用的:
{% for object in objects %} {% if forloop.first %}<li class="first">{% else %}<li>{% endif %} {{ object }} </li> {% endfor %}
forloop.last 是一个布尔值;在最后一次执行循环时被置为True。 一个常见的用法是在一系列的链接之间放置管道符(|)
{% for link in links %}{{ link }}{% if not forloop.last %} | {% endif %}{% endfor %}
forloop.parentloop 是一个指向当前循环的上一级循环的
forloop 对象的引用
{% for country in countries %} <table> {% for city in country.city_list %} <tr> <td>Country #{{ forloop.parentloop.counter }}</td> <td>City #{{ forloop.counter }}</td> <td>{{ city }}</td> </tr> {% endfor %} </table> {% endfor %}
在一个 {% for %} 块中,已存在的变量会被移除,以避免
forloop
变量被覆盖。 Django会把这个变量移动到 forloop.parentloop 中。通常我们不用担心这个问题,但是一旦我们在模板中定义了
forloop 这个变量(当然我们反对这样做),在 {% for
%} 块中它会在 forloop.parentloop 被重新命名。
ifequal/ifnotequal
下面的例子比较两个模板变量 user 和currentuser :
{% ifequal user currentuser %} <h1>Welcome!</h1> {% endifequal %}
如果要实现多行注释,可以使用`` {% comment %}`` 模板标签,就像这样:
{% comment %}This is amulti-line comment.{% endcomment %}
相关文章推荐
- 转:django模板标签{% for %}的使用(含forloop用法)
- django第四课 标签的用法(if/else、for、ifequal、过滤器、注释等)
- django模板标签{% for %}的使用(含forloop用法)
- 循环语句:while;do while;for的用法
- django错误 - Reason given for failure: CSRF cookie not set.
- C++11 for循环的新用法
- startActivityForResult()用法
- JavaSE (七)循环控制语句:while、do....while、for,break和continue用法
- startActivityForResult()的用法
- 《Django for example》 讲了什么
- for循环语句的用法
- MsgWaitForMultipleObjects用法
- Rails中 accepts_nested_attributes_for 的用法
- 基于md5的解决js,css缓存问题for django
- startActivityForResul的用法
- SimpleDateFormatter Java中的用法
- Django的models中filter的各种用法
- shell for的用法
- 关于for循环与异常 continue、break的用法
- sqlserver waitfor time 延迟函数的用法