找出Django当前登录的用户

时间:2010-02-07 13:48:03

标签: django authentication

我创建了一个包含5个用户的列表。如何找出当前登录的用户?另请注意,如果有任何方法可以确定超级用户是否已登录?

我的要求是,我想将模板中某些页面的访问权限仅限于超级用户。

3 个答案:

答案 0 :(得分:16)

当前用户在请求对象中:

def my_view(request):
    current_user = request.user

它是django.contrib.auth.models.User类,它有一些字段,例如。

  • is_staff - 布尔值。指定此用户是否可以访问管理站点;
  • is_superuser - 布尔值。指定此用户具有所有权限,而无需明确指定它们。

http://docs.djangoproject.com/en/1.1/topics/auth/#django.contrib.auth.models.User

因此,要测试当前用户是否是超级用户,您可以:

if user.is_active and user.is_superuser:
    ...

您可以在模板中使用它,或者通过上下文将其作为变量传递给模板。

答案 1 :(得分:3)

听起来你应该使用built-in permissions system

答案 2 :(得分:0)

查看user_passes_test装饰器以查看您的观点。 Django片段有一个相关的装饰者:

  

这些装饰者是基于   user_passes_test和   permission_required,但是当用户   登录并未通过测试,它   将呈现403错误而不是   重定向到登录 - 只有匿名   用户将被要求登录。

http://www.djangosnippets.org/snippets/254/