最近完成這樣的一個需求,比如說一個網(wǎng)頁有幾個按鈕(添加,編輯,刪除,查看),張三用戶可以訪問這幾個按鈕,李四只能查看(沒有其它權(quán)限),怎么辦?我相信對于初學者來說,完成這樣的需求,確實有點難度,作者也是折騰了2天,才懂的一點皮毛,在這里非常感謝我的同事雪姐,耐心的給我講解。言歸正傳,把這個流程跟大家分享一下.(高手勿噴)
創(chuàng)新互聯(lián)建站主要從事成都做網(wǎng)站、成都網(wǎng)站設(shè)計、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務。立足成都服務祁連,十載網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務專業(yè),歡迎來電咨詢建站服務:028-86922220首先設(shè)計表結(jié)構(gòu)
創(chuàng)建一個用戶表,并且做了一對一關(guān)聯(lián)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) #關(guān)聯(lián)django user表 username = models.CharField(max_length=100) password = models.CharField(max_length=100) def __unicode__(self): return self.username
2.自定義權(quán)限表
class quanxian(models.Model): shuoming=models.CharField(max_length=100) def __unicode__(self): return self.shuoming class Meta: permissions = ( ('edit', u'編輯權(quán)限'), ('add', u'添加權(quán)限'), ('DEL',u'刪除權(quán)限'), ('list',u'查看權(quán)限'), )
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.初始化數(shù)據(jù)表,創(chuàng)建后臺admin管理員
python manage.py makemigrations
python manage.py migrate
創(chuàng)建后臺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后臺,創(chuàng)建用戶
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另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。