django网页按钮权限管理
最近完成这样的一个需求,比如说一个网页有几个按钮(添加,编辑,删除,查看),张三用户可以访问这几个按钮,李四只能查看(没有其它权限),怎么办?我相信对于初学者来说,完成这样的需求,确实有点难度,作者也是折腾了2天,才懂的一点皮毛,在这里非常感谢我的同事雪姐,耐心的给我讲解。言归正传,把这个流程跟大家分享一下.(高手勿喷)
首先设计表结构
创建一个用户表,并且做了一对一关联django user表
1.自定义用户表
from__future__importunicode_literalsfromdjango.dbimportmodelsfromdjango.contrib.auth.modelsimportUser#Createyourmodelshere.#自定义用户表classUserinfo(models.Model):user=models.OneToOneField(User)#关联djangouser表username=models.CharField(max_length=100)password=models.CharField(max_length=100)def__unicode__(self):returnself.username
2.自定义权限表
classquanxian(models.Model):shuoming=models.CharField(max_length=100)def__unicode__(self):returnself.shuomingclassMeta:permissions=(('edit',u'编辑权限'),('add',u'添加权限'),('DEL',u'删除权限'),('list',u'查看权限'),)
3.views.py定义一个login视图方法
fromtest01.modelsimportUserinfofromdjangoimportformsfromdjango.contribimportauthfromdjango.contrib.auth.modelsimportUserfromdjango.contrib.authimportauthenticatefromdjango.templateimportRequestContext#Createyourviewshere.classUserForm(forms.Form):username=forms.CharField(label="user",max_length=100)password=forms.CharField(label="passwd",widget=forms.PasswordInput())defindex(request):returnrender_to_response('index.html')deflogin(request):ifrequest.method=='POST':uf=UserForm(request.POST)ifuf.is_valid():username=uf.cleaned_data['username']password=uf.cleaned_data['password']printusername,password,"[*******]"user1=authenticate(username=username,password=password)is_add=Trueifuser1.has_perm('test01.add')elseFalseprint'user1--->',user1,user1.has_perm('test01.add'),is_addifuser1:returnrender_to_response('index.html',locals(),context_instance=RequestContext(request))else:returnHttpResponseRedirect('/login/')else:uf=UserForm()returnrender_to_response('login.html',{'uf':uf})
4.在admin.py注册models.py里的表
fromdjango.contribimportadminfromtest01importmodelsadmin.site.register(models.quanxian)admin.site.register(models.Userinfo)
5.urls.py
fromdjango.conf.urlsimporturlfromdjango.contribimportadminfromtest01importviewsurlpatterns=[url(r'^admin/',admin.site.urls),url(r'^index/$',views.index),url(r'^$',views.login,name='login'),]
6.初始化数据表,创建后台admin管理员
python manage.py makemigrations
python manage.py migrate
创建后台admin管理员
bogon:model_test will.xin$ python manage.py createsuperuser
Username (leave blank to use 'will.xin'): admin
Email address:
Password:
Password (again):
Superuser created successfully.
7.登录admin后台,创建用户
http://127.0.0.1:8000/admin/
8.前端页面
vim login.html
<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Strict//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><htmlxmlns="http://www.w3.org/1999/xhtml"xml:lang="en"lang="en"><head><metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"/><title>登录</title></head><!--styletype="text/css">body{color:#efd;background:#453;padding:05em;margin:0}h2{padding:2em1em;background:#675}h3{color:#bf8;border-top:1pxdotted#fff;margin-top:2em}p{margin:1em0}</style--><body><h2>登录页面:</h2><formmethod='post'enctype="multipart/form-data">`uf`.`as_p`<inputtype="submit"value="ok"/></form></body></html>
index.html
<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>index</title></head><body>{%ifis_add%}<button>编辑</button><button>添加</button><button>删除</button>{%else%}<button>查看</button>{%endif%}<div>欢迎{{username}}登录</div></body></html>
9.测试
首先用zhangsan用户登录
lisi用户登录后
大功告成
附件:http://down.51cto.com/data/2368094声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。