首页 > 其他 > 详细

django代码重用整理--摘自django book

时间:2014-02-17 04:49:12      阅读:661      评论:0      收藏:0      [点我收藏+]

forloop.counter 总是一个表示当前循环的执行次数的整数计数器。 这个计数器是从1开始的,所以在第一次循环时 forloop.counter 将会被设置为1。

{% for item in todo_list %}
    <p>{{ forloop.counter }}: {{ item }}</p>
{% endfor %}

forloop.parentloop 是一个指向当前循环的上一级循环的 forloop 对象的引用(在嵌套循环的情况下)。 例子在此:

1

{% 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 %}
我们介绍了 render_to_response() 这个快捷方式,它可以简化调用 loader.get_template() ,然后创建一个 Context 对象,最后再调用模板对象的 render()过程





No1第一种

def my_view1(request):
    if not request.user.is_authenticated():
        return HttpResponseRedirect(‘/accounts/login/‘)
    # ...
    return render_to_response(‘template1.html‘)

def my_view2(request):
    if not request.user.is_authenticated():
        return HttpResponseRedirect(‘/accounts/login/‘)
    # ...
    return render_to_response(‘template2.html‘)

def my_view3(request):
    if not request.user.is_authenticated():
        return HttpResponseRedirect(‘/accounts/login/‘)
    # ...
    return render_to_response(‘template3.html‘)

重复代码为登录验证

修改为

def requires_login(view):
    def new_view(request, *args, **kwargs):
        if not request.user.is_authenticated():
            return HttpResponseRedirect(‘/accounts/login/‘)
        return view(request, *args, **kwargs)
    return new_view

函数requires_login,传入一个视图函数view,然后返回一个新的视图函数new_view.这个新的视图函数new_view在函数requires_login内定义 处理request.user.is_authenticated()这个验证,从而决定是否执行原来的view函数

from django.conf.urls.defaults import *
from mysite.views import requires_login, my_view1, my_view2, my_view3

urlpatterns = patterns(‘‘,
    (r‘^view1/$‘, requires_login(my_view1)),
    (r‘^view2/$‘, requires_login(my_view2)),
    (r‘^view3/$‘, requires_login(my_view3)),
)


No2 第二种


django代码重用整理--摘自django book

原文:http://blog.csdn.net/jacsice/article/details/19286715

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!