最近完成这样的一个需求,比如说一个网页有几个按钮(添加,编辑,删除,查看),张三用户可以访问这几个按钮,李四只能查看(没有其它权限),怎么办?我相信对于初学者来说,完成这样的需求,确实有点难度,作者也是折腾了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
登录 登录页面:
index.html
index {% if is_add %} {% else %} {% endif %}欢迎{{ username }} 登录
9.测试
首先用zhangsan用户登录
lisi用户登录后
大功告成
附件:http://down.51cto.com/data/2368094另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。