<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
在使用authenticate進行驗證後,如果驗證通過了。那麼會返回一個user物件,拿到user物件後,可以使用django.contrib.auth.login進行登入。範例程式碼如下:
user = authenticate(username=username, password=password) if user is not None: if user.is_active: login(request, user)
登出,或者說退出登入。我們可以通過django.contrib.auth.logout來實現。他會清理掉這個使用者的session資料。
有時候,某個檢視函數是需要經過登入後才能存取的。那麼我們可以通過django.contrib.auth.decorators.login_required裝飾器來實現。範例程式碼如下:
from django.contrib.auth.decorators import login_required # 在驗證失敗後,會跳轉到/accounts/login/這個url頁面 @login_required(login_url='/accounts/login/') def my_view(request): pass
Django中內建了許可權的功能。他的許可權都是針對表或者說是模型級別的。比如對某個模型上的資料是否可以進行增刪改查操作。他不能針對資料級別的,比如對某個表中的某條資料能否進行增刪改查操作(如果要實現資料級別的,考慮使用django-guardian)。建立完一個模型後,針對這個模型預設就有三種許可權,分別是增/刪/改/。可以在執行完migrate命令後,檢視資料庫中的auth_permission表中的所有許可權。
其中的codename表示的是許可權的名字。name表示的是這個許可權的作用。
如果我們想要增加新的許可權,比如檢視某個模型的許可權,那麼我們可以在定義模型的時候在Meta中定義好。範例程式碼如下:
class Article(models.Model): title = models.CharField(max_length=100) content = models.TextField() author = models.ForeignKey(get_user_model(),on_delete=models.CASCADE) class Meta: permissions = ( ('view_article','can view article'), )
許可權都是django.contrib.auth.Permission的範例。這個模型包含三個欄位,name、codename以及content_type,其中的content_type表示這個permission是屬於哪個app下的哪個models。用Permission模型建立許可權的程式碼如下:
from django.contrib.auth.models import Permission,ContentType from .models import Article content_type = ContentType.objects.get_for_model(Article) permission = Permission.objects.create(name='可以編輯的許可權',codename='edit_article',content_type=content_type)
許可權本身只是一個資料,必須和使用者進行繫結,才能起到作用。User模型和許可權之間的管理,可以通過以下幾種方式來管理:
使用django.contrib.auth.decorators.permission_required可以非常方便的檢查使用者是否擁有這個許可權,如果擁有,那麼就可以進入到指定的檢視函數中,如果不擁有,那麼就會報一個400錯誤。範例程式碼如下:
from django.contrib.auth.decorators import permission_required @permission_required('front.view_article') def my_view(request): ...
許可權有很多,一個模型就有最少三個許可權,如果一些使用者擁有相同的許可權,那麼每次都要重複新增。這時候分組就可以幫我們解決這種問題了,我們可以把一些許可權歸類,然後新增到某個分組中,之後再把和把需要賦予這些許可權的使用者新增到這個分組中,就比較好管理了。分組我們使用的是django.contrib.auth.models.Group模型, 每個使用者組擁有id和name兩個欄位,該模型在資料庫被對映為auth_group資料表。
Group.object.create(group_name):建立分組。
group.permissions:某個分組上的許可權。多對多的關係。
user.groups:某個使用者上的所有分組。多對多的關係。
在settings.TEMPLATES.OPTIONS.context_processors下,因為新增了django.contrib.auth.context_processors.auth上下文處理器,因此在模板中可以直接通過perms來獲取使用者的所有許可權。範例程式碼如下:
{% if perms.front.add_article %} <a href='/article/add/'>新增文章</a> {% endif %}
以上就是Django登入許可權及分組模板使用許可權的詳細內容,更多關於Django許可權分組的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45