@(python)html
为了测试效果,经过admin后台管理添加一些实例python
+----+-------+------+-----+-------------+
| id | name | sex | age | email |
+----+-------+------+-----+-------------+
| 1 | liton | male | 18 | qq@163.com |
| 2 | mike | male | 19 | mike@qq.com |
| 3 | mach | male | 20 | mach@qq.com |
+----+-------+------+-----+-------------+sql
from django.shortcuts import render from django.shortcuts import render_to_response from users.models import Info def show(request): r = Info.objects.all() return render_to_response('show.html', {'user_list':r})
url('^show/$', 'users.views.show'),
from django.conf.urls import include, url from django.contrib import admin from mysite.views import hello from mysite.views import current_datetime urlpatterns = [ # Examples: # url(r'^$', 'mysite.views.home', name='home'), # url(r'^blog/', include('blog.urls')), url(r'^admin/', include(admin.site.urls)), url(r'^hello/$', hello), url('^time/$', current_datetime), url('^info/$', 'mysite.views.info'), url('^show/$', 'users.views.show'), ]
- 添加模版文件,在templates文件夹下新建show.html
<html> <head> <title>测试Django模板</title> </head> <body> {% for item in user_list %} <p>{{ forloop.counter }}: {{ item.name }}</p> {% endfor %} </body> </html>
- 打开浏览器http://ip:8000/show/,显示以下
1: liton 2: mike 3: mach
- 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 是一个布尔值,若是该迭代是第一次执行,该值为真True,以后为False. - forloop.last 是一个布尔值;在最后一次执行循环时被置为True。 - forloop 变量仅仅可以在循环中使用。 在模板解析器碰到`{% endfor %}`标签后,forloop就不可访问了 - locals()
locals()返回一个包含当前做用域里面的全部变量和它们的值的字典。不须要手动构造字典。
for标签的例子,与下面的代码获得的效果是同样的。django
from django.shortcuts import render from django.shortcuts import render_to_response from users.models import Info def show(request): user_list = Info.objects.all() return render_to_response('show.html',locals())
from django.shortcuts import render from django.shortcuts import render_to_response from django.template import RequestContext from users.models import Info def show(request): #r = Info.objects.all() #return render_to_response('show.html', {'user_list':r}) user_list = Info.objects.all() return render_to_response('show.html',locals()) def custom_proc(request): return { 'title': 'django', 'category': 'context', } def custom_proc_1(request): return { 'section': '1', } def show_context(request): user_list = Info.objects.all() return render_to_response('show_context.html', {'user_list':user_list},context_instance=RequestContext(request, processors=[custom_proc,custom_proc_1]))
新增模版文件show_context.html浏览器
<html> <head> <title>{{title}}:{{category}}:{{section}}</title> </head> <body> <p>{{title}}:{{category}}:{{section}}</p> {% for item in user_list %} <p>{{ forloop.counter }}: {{ item.name }}</p> {% endfor %} </body> </html>
同时新增url规则
url('^show_context/$', 'users.views.show_context'),
django自带context_processor的字典app
def auth(request): return { 'user': user, 'messages': user.get_and_delete_messages(), 'perms': PermWrapper(user), } def debug(request): context_extras = {} context_extras['debug'] = True context_extras['sql_queries'] = connection.queries return context_extras def i18n(request): context_extras = {} context_extras['LANGUAGES'] = settings.LANGUAGES context_extras['LANGUAGE_CODE'] = translation.get_language() context_extras['LANGUAGE_BIDI'] = translation.get_language_bidi() return context_extras def media(request): return {'MEDIA_URL': settings.MEDIA_URL} def request(request): return {'request': request}
http://blog.csdn.net/cain/article/details/6623717oop