2010-02-07 38 views
11

Tôi đã tạo danh sách gồm 5 người dùng. Làm cách nào để biết người dùng nào đã đăng nhập? Ngoài ra vui lòng đề cập, nếu có bất kỳ cách nào để tìm hiểu xem siêu người dùng đã đăng nhập chưa?Tìm hiểu người dùng hiện đang đăng nhập ở Django

Yêu cầu của tôi là, tôi muốn hạn chế quyền truy cập của một số trang nhất định trong các mẫu chỉ dành cho người siêu người dùng.

Trả lời

16

sử dụng hiện tại là trong yêu cầu đối tượng:

def my_view(request): 
    current_user = request.user 

Đó là django.contrib.auth.models.User lớp và nó có một số lĩnh vực, ví dụ

  • is_staff - Boolean. Chỉ định liệu người dùng này có thể truy cập trang quản trị hay không;
  • is_superuser - Boolean. Chỉ định rằng người dùng này có tất cả các quyền mà không chỉ định rõ ràng chúng.

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

Vì vậy, để kiểm tra xem người dùng hiện nay là superuser bạn có thể:

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

Bạn có thể sử dụng nó trong mẫu hoặc chuyển thông tin này đến mẫu như biến qua ngữ cảnh.

+0

Tuyệt vời nhất. Nó đã làm việc . Cảm ơn rất nhiều ! Bạn tuyệt lắm!! –

3

Có vẻ như bạn nên sử dụng số built-in permissions system cho việc này.

+0

Liệu Django lưu trữ tên của hiện đang đăng nhập sử dụng trong một số thuộc tính, Vì vậy mà tôi có thể cấp quyền truy cập vào các trang web của tôi dựa trên đó (tôi mới để django) –

+1

Người dùng được lưu trữ trong 'request.user'. Từ đó nó chỉ là vấn đề truy cập vào các thuộc tính trên mô hình 'Người dùng'. –

+0

đó là những gì tôi đang tìm kiếm !! cảm ơn rất nhiều . –

0

Kiểm tra trang trí user_passes_test cho chế độ xem của bạn. Django đoạn có trang trí liên quan:

Những trang trí dựa trên user_passes_test và permission_required, nhưng khi người dùng được đăng nhập và không kiểm tra, nó sẽ khiến một lỗi 403 thay vì chuyển hướng để đăng nhập - chỉ người dùng ẩn danh mới được yêu cầu đăng nhập.

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

Các vấn đề liên quan