码迷,mamicode.com
首页 > 其他好文 > 详细

在django中应用装饰器(一)

时间:2018-05-21 14:42:13      阅读:199      评论:0      收藏:0      [点我收藏+]

标签:**kwargs   return   war   wrap   rgs   pos   问题   篡改   url   

在新写的博客应用中,涉及很多关于权限的问题,比如修改用户信息,博客的修改与删除,虽然默认的提交信息都是session的用户,但是也应该防止一下篡改提交的可能,之前想的是在每个view中加一段判断的逻辑,判断请求的request.user和提交数据中的用户是否是同一个用户,也算是比较初级的一个判定把,后来想想如果后面涉及的接口越来越多,重复的代码就会很多,查了很多资料,感觉这个功能可以用装饰器来实现,

def inter_permission(func):
    def wrapper(*args, **kwargs):
        for arg in args:
            request = arg
        for kwarg in kwargs:
            username = kwargs[kwarg]
        if request.method == GET:
            if str(request.user) == username:
                return func(*args, **kwargs)
            else:
                return redirect(/)
        if request.method == POST:
            if str(request.user) == request.POST[permission_name]:
                return func(*args, **kwargs)
            else:
                return HttpResponse(permission denied)
    return wrapper

关于装饰器的内容,我这里就不叙述了,网上一搜一大把,主要是在这里记录一下我的个人想法,

1.对于装饰的方法或者类的参数数量问题,*args, **kwargs即可满足所有参数类型,这里还有一个小插曲就是url.py中的参数是属于dict类型,否则的话只用*args就可以满足普通的参数

2.对这个装饰器我只是进行一个初步的构造,处理逻辑大致分为GET和POST,普通的GET可以通过url中获取参数,POST则是从post内容中获取,所以在这里区分了一下

3.后续会对权限管控这里统一一下接口,还没有实现,后续会对接口统一,然后对装饰器也会对应的优化一下逻辑,现在应该还存在很大问题

在django中应用装饰器(一)

标签:**kwargs   return   war   wrap   rgs   pos   问题   篡改   url   

原文地址:https://www.cnblogs.com/superpigeons/p/9066526.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!