当前位置:K88软件开发文章中心网站服务器框架django → 文章内容

Django 会话、用户和注册

减小字体 增大字体 作者:佚名  来源:网上搜集  发布时间:2019-1-25 14:19:25

ware 后面的 MIDDLEWARE_CLASSES 设置中包含'django.contrib.auth.middleware.AuthenticationMiddleware' SessionMiddleware。这样安装后,我们就可以在视图(view)的函数中处理user了。 在视图中存取users,主要用 request.user ;这个对象表示当前已登录的用户。 如果用户还没登录,这就是一个AnonymousUser对象(细节见下)。你可以很容易地通过 is_authenticated() 方法来判断一个用户是否已经登录了:if request.user.is_authenticated(): # Do something for authenticated users.else: # Do something for anonymous users.使用User对象User 实例一般从 request.user ,或是其他下面即将要讨论到的方法取得,它有很多属性和方法。AnonymousUser 对象模拟了 部分 的接口,但不是全部,在把它当成真正的user对象 使用前,你得检查一下user.is_authenticated() 表14-3和14-4分别列出了User 对象中的属性(fields)和方法。表 14-3. User 对象属性属性描述username必需的,不能多于30个字符。 仅用字母数字式字符(字母、数字和下划线)。first_name可选; 少于等于30字符。last_name可选; 少于等于30字符。email可选。 邮件地址。password必需的。 密码的哈希值(Django不储存原始密码)。 See the Passwords section for more about this value.is_staff布尔值。 用户是否拥有网站的管理权限。is_active布尔值. 设置该账户是否可以登录。 把该标志位置为False而不是直接删除账户。is_superuser布尔值 标识用户是否拥有所有权限,无需显式地权限分配定义。last_login用户上次登录的时间日期。 它被默认设置为当前的日期/时间。date_joined账号被创建的日期时间 当账号被创建时,它被默认设置为当前的日期/时间。.. table:: 表 14-4. User 对象方法方法描述is_authenticated()对于真实的User对象,总是返回True 。这是一个分辨用户是否已被鉴证的方法。 它并不意味着任何权限,也不检查用户是否仍是活动的。 它仅说明此用户已被成功鉴证。is_anonymous()对于AnonymousUser 对象返回True (对于真实的User 对象返回False )。总的来说,比起这个方法,你应该倾向于使用is_authenticated() 方法。get_full_name()返回first_name 加上last_name ,中间插入一个空格。set_password(passwd)设定用户密码为指定字符串(自动处理成哈希串)。 实际上没有保存User对象。check_password(passwd)如果指定的字符串与用户密码匹配则返回True。 比较时会使用密码哈希表。get_group_permissions()返回一个用户通过其所属组获得的权限字符串列表。get_all_permissions()返回一个用户通过其所属组以及自身权限所获得的权限字符串列表。has_perm(perm)如果用户有指定的权限,则返回True ,此时perm 的格式是"package.codename" 。如果用户已不活动,此方法总是返回False 。has_perms(perm_list)如果用户拥有全部 的指定权限,则返回True 。 如果用户是不活动的,这个方法总是返回False 。has_module_perms(app_label)如果用户拥有给定的app_label 中的任何权限,则返回True 。如果用户已不活动,这个方法总是返回False 。get_and_delete_messages()返回一个用户队列中的Message 对象列表,并从队列中将这些消息删除。email_user(subj, msg)向用户发送一封电子邮件。 这封电子邮件是从DEFAULT_FROM_EMAIL 设置的地址发送的。 你还可以传送一个第三参数:from_email ,以覆盖电邮中的发送地址。最后,User 对象有两个many-to-many属性。 groups 和permissions 。正如其他的many-to-many属性使用的方法一样,User 对象可以获得它们相关的对象:# Set a user's groups:myuser.groups = group_list# Add a user to some groups:myuser.groups.add(group1, group2,...)# Remove a user from some groups:myuser.groups.remove(group1, group2,...)# Remove a user from all groups:myuser.groups.clear()# Permissions work the same waymyuser.permissions = permission_listmyuser.permissions.add(permission1, permission2, ...)myuser.permissions.remove(permission1, permission2, ...)myuser.permissions.clear()登录和退出Django 提供内置的视图(view)函数用于处理登录和退出 (以及其他奇技淫巧),但在开始前,我们来看看如何手工登录和退出。 Django提供两个函数来执行django.contrib.auth\中的动作 : authenticate()和login()。认证给出的用户名和密码,使用 authenticate() 函数。它接受两个参数,用户名 username 和 密码 password ,并在密码对给出的用户名合法的情况下返回一个 User 对象。 如果密码不合法,authenticate()返回None。>>> from django.contrib import auth>>> user = auth.authenticate(username='john', password='secret')>>> if user is not None:... print "Correct!"... else:... print "Invalid password."authenticate() 只是验证一个用户的证书而已。 而要登录一个用户,使用 login() 。该函数接受一个HttpRequest 对象和一个 User 对象作为参数并使用Django的会话( session )框架把用户的ID保存在该会话中。下面的例子演示了如何在一个视图中同时使用 authenticate() 和 login() 函数:from django.contrib import authdef login_view(request): username = request.POST.get('username', '') password = request.POST.get('password', '') user = auth.authenticate(username=username, password=password) if user is not None and user.is_active: # Correct password, and the user is marked "active" auth.login(request, user) # Redirect to a success page. return HttpResponseRedirect("/account/loggedin/") else: # Show an error page return HttpResponseRedirect("/account/invalid/")注销一个用户,在你的视图中使用 django.contrib.auth.logout() 。 它接受一个HttpRequest对象并且没有返回值。from django.contrib import authdef logout_view(request): auth.logout(request) # Redirect to a success page. return HttpResponseRedirect("/account/loggedout/")注意,即使用户没有登录, logout() 也不会抛出任何异常。在实际中,你

上一页  [1] [2] [3] [4] [5] [6] [7]  下一页


Django 会话、用户和注册