自定义Django的Decorators
2014-07-18 18:36
218 查看
在Django中我们在方法前面会看到这样一类的方法:
如果你要自定义装饰器,步骤如下:
1.建一个文件:decorators.py
2.文件中代码如下:
这样设置后,当用户名为bendan的人调用方法checkuserinfo时,页面就会重定向到登陆页面;而其他用户则不受影响,继续调用checkuserinfo方法。
@login_required def sayhello(request): print "helloworld"其中的 login_required 我们称为 装饰器。
如果你要自定义装饰器,步骤如下:
1.建一个文件:decorators.py
2.文件中代码如下:
# -*- coding: utf-8 -*- from django.core.urlresolvers import reverse from django.http import HttpResponseRedirect from django.template import RequestContext from .models import User # 验证用户 def check_user(view_func): # 此方法为包裹view_func的方法 # 我们可以在这里定义自己需要的功能 def _wrapped_view_func(request, *args, **kwargs): try: user = User.objects.get(user=request.user.id) except CampusUser.DoesNotExist: user = User.objects.none() # 如果用户名为bendan,则重定向到登陆页面 if user and user.name == "bendan": return HttpResponseRedirect('/login') # 返回包裹的方法 return view_func(request, *args, **kwargs) return _wrapped_view_func3.在views.py中:
# -*- coding: utf-8 -*- from .decorators import check_user @check_user def checkuserinfo(request): <span style="white-space:pre"> </span>print "hello"
这样设置后,当用户名为bendan的人调用方法checkuserinfo时,页面就会重定向到登陆页面;而其他用户则不受影响,继续调用checkuserinfo方法。
相关文章推荐
- Django自定义用户认证系统Customizing authentication
- Django REST Framework学习-分页,通用视图,自定义RelatedField
- django 自定义分页类改善,适用于于条件查询等操作,提高灵活性
- 在django项目中自定义manage命令(转)
- django 没有设置404错误页面的时候 ,尽量自定义404页面
- 第三百九十六节,Django+Xadmin打造上线标准的在线教育平台—其他插件使用说,自定义列表页上传插件
- django-orm字段、自定义字段、字段参数、元信息、多表关系
- django 自定义模板过滤器
- django执行自定义sql语句
- django自定义signal的发送和接收样例
- Django中利用filter与simple_tag为前端自定义函数的实现方法
- Django自定义User模型和登录验证
- Django 自定义admin 开源项目
- django 自定义 密码加密方式 及自定义验证方式
- 解决django中内置身份认证表单无法自定义渲染的问题
- 深入理解Django的自定义过滤器
- 自定义django admin 之一
- django创建表时附加数据库自定义选项的方法——如指定数据库的存储引擎
- 自定义django的Template context processors
- [django]添加自定义template filter标签