模版1-django

模版1-django

@(python)

  • 为了测试效果,通过admin后台管理添加一些实例

+----+-------+------+-----+-------------+
| 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 |
+----+-------+------+-----+-------------+

  • for 标签
    • 修改users文件夹下的views.py的代码,如下
         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})
 - 修改urls.py,添加`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标签的例子,与下面的代码得到的效果是一样的。

	   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())    
  • context标签
    上下文context标签用于复用公共的变量,甚至全局变量。
    修改users下的views.py文件
     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的字典

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/6623717

posted @ 2015-01-22 21:37  liton  阅读(190)  评论(0编辑  收藏  举报