美文网首页
Django 用户管理

Django 用户管理

作者: SSRSGJYD | 来源:发表于2018-10-08 20:34 被阅读0次

相关模块:django.contrib.auth
使用:

1. 创建用户:

User 类默认的属性有:

  • usename
  • password
  • email
  • first_name
  • last_name
try:
    User.objects.get(username=username)
except User.DoesNotExist:
    user = User.objects.create_user(username,email,
password)
    if user is not None:
        user.save() 
2. 登录:
username = request.POST['username']
password = request.POST['password']
user = authenticate(request, username=username, password=password)
if user is not None:
    login(request, user)
    # Redirect to a success page.
    ...
else:
     # Return an 'invalid login' error message.
    ...

如果用户名和密码正确,则获得 user 对应于model的用户对象。

3. 退出登录:
auth.logout(request)
4. 密码相关:
user.set_password(raw_password)
user.check_password(raw_password)
5. 权限管理:

Models中的Permisson模块提供了对于每个权限的抽象。创建权限:

from django.contrib.auth.models import Group, Permission
from django.contrib.contenttypes.models import ContentType
 
content_type = ContentType.objects.get(app_label='school', model='Discussion')
permission = Permission.objects.create(codename='can_publish',
                                       name='Can Publish Discussions',
                                       content_type=content_type)

User对象可以直接管理拥有的权限:

myuser.user_permissions.set([permission_list])
myuser.user_permissions.add(permission, permission, ...)
myuser.user_permissions.remove(permission, permission, ...)
myuser.user_permissions.clear()

检验用户是否拥有某个权限:

has_perm(perm, obj=None)
has_perms(perm_list, obj=None)

同时,Models中的Group模块提供了对用户角色的抽象,每一种角色对应一个group,也就拥有特定的一组权限。

用户管理权限组的方法:

myuser.groups.set([group_list])
myuser.groups.add(group, group, ...)
myuser.groups.remove(group, group, ...)
myuser.groups.clear()



参考资料:
Using the Django authentication system
django.contrib.auth
https://www.jianshu.com/p/01126437e8a4

相关文章

网友评论

      本文标题:Django 用户管理

      本文链接:https://www.haomeiwen.com/subject/dhgjaftx.html