django的使用权限控制
' django的使用权限控制
在view的控制
[ccn lang="python" tab_size="4" theme="blackboard" width="800" ]
if not request.user.has_perm('mark.add_project'):
return render_to_response('mark/message.html', {
'message': "对不起!您没有权限进行此操作,请联系管理员", 'result':'4',
}, context_instance=RequestContext(request))
[/ccn]
其中mark就是你的app的名字,后面的就是permission的名字,具体可以查看数据库表auth_permission的codename 字段
每个model都有3个默认的permission
model的名字分别加上下划线和add,change和delete分别
比如
* add: user.has_perm('foo.add_bar')
* change: user.has_perm('foo.change_bar')
* delete: user.has_perm('foo.delete_bar')
也可以使用声明的方法
[ccn lang="python" tab_size="4" theme="blackboard" width="800" ]
from django.contrib.auth.decorators import permission_required
@permission_required('polls.can_vote', login_url='/loginpage/')
def my_view(request):
...
或者
from django.contrib.auth.decorators import permission_required
@permission_required('polls.can_vote')
def my_view(request):
...
[/ccn]
或者
[ccn lang="python" tab_size="4" theme="blackboard" width="800" ]
from django.contrib.auth.decorators import user_passes_test
@user_passes_test(lambda u: u.has_perm('polls.can_vote'), login_url='/login/')
def my_view(request):
...
[/ccn]
或者
[ccn lang="python" tab_size="4" theme="blackboard" width="800" ]
from django.contrib.auth.decorators import user_passes_test
@user_passes_test(lambda u: u.has_perm('polls.can_vote'))
def my_view(request):
...
[/ccn]