django网页按钮权限管理-创新互联

最近完成这样的一个需求,比如说一个网页有几个按钮(添加,编辑,删除,查看),张三用户可以访问这几个按钮,李四只能查看(没有其它权限),怎么办?我相信对于初学者来说,完成这样的需求,确实有点难度,作者也是折腾了2天,才懂的一点皮毛,在这里非常感谢我的同事雪姐,耐心的给我讲解。言归正传,把这个流程跟大家分享一下.(高手勿喷)

创新互联建站主要从事成都做网站、成都网站设计、网页设计、企业做网站、公司建网站等业务。立足成都服务祁连,十载网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:028-86922220

首先设计表结构

创建一个用户表,并且做了一对一关联django user表

1.自定义用户表

from __future__ import unicode_literals

from django.db import models
from django.contrib.auth.models import User

# Create your models here.
#自定义用户表
class Userinfo(models.Model):
    user = models.OneToOneField(User) #关联django user表
    username = models.CharField(max_length=100)
    password = models.CharField(max_length=100)


    def __unicode__(self):
        return self.username

2.自定义权限表

class quanxian(models.Model):
    shuoming=models.CharField(max_length=100)
    def __unicode__(self):
        return self.shuoming
    class Meta:
        permissions = (
            ('edit', u'编辑权限'),
            ('add', u'添加权限'),
            ('DEL',u'删除权限'),
            ('list',u'查看权限'),
        )

3.views.py定义一个login视图方法

from test01.models import Userinfo
from django import forms
from django.contrib import auth
from django.contrib.auth.models import User
from django.contrib.auth import authenticate
from django.template import RequestContext


# Create your views here.
class UserForm(forms.Form):
    username = forms.CharField(label="user",max_length=100)
    password = forms.CharField(label="passwd",widget=forms.PasswordInput())
def index(request):


    return render_to_response('index.html')


def login(request):
    if request.method == 'POST':
        uf = UserForm(request.POST)
        if uf.is_valid():


            username = uf.cleaned_data['username']
            password = uf.cleaned_data['password']
            print username,password,"[*******]"

           

            user1 = authenticate(username=username, password=password)
            is_add = True if user1.has_perm('test01.add') else False 
            print 'user1--->',user1,user1.has_perm('test01.add'), is_add
            if user1:
                return render_to_response('index.html',locals(), context_instance=RequestContext(request))
            else:
                return HttpResponseRedirect('/login/')
    else:
        uf = UserForm()
    return render_to_response('login.html',{'uf':uf})

4.在admin.py注册models.py里的表

from django.contrib import admin
from test01 import models
admin.site.register(models.quanxian)
admin.site.register(models.Userinfo)

5.urls.py

from django.conf.urls import url
from django.contrib import admin
from test01 import views

urlpatterns = [
    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





    
    登录

 

登录页面:

    `uf`.`as_p`     

index.html




    
    index



{% if is_add %}
    
    
    
{% else %}
    
{% endif %}


欢迎{{ username }} 登录

9.测试

首先用zhangsan用户登录

lisi用户登录后

大功告成

附件:http://down.51cto.com/data/2368094

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


文章标题:django网页按钮权限管理-创新互联
转载注明:http://ybzwz.com/article/jhshi.html