2013-06-19 38 views
0

我有一個學生模型,它有一對一的字段和默認的用戶模型。在django中檢查用戶憑證

我有一個像example.com/studentid這樣的url,其中student id是一個整數值。

我想知道我該如何檢查網址中的studentid是否與登錄人員的studentid相同?

這是爲了確保已登錄的人只能查看他自己的個人資料而不能查看其他任何學生資料,即使他隨機更改了網址中studentid的值。

+0

你並不需要在URL中使用'student_id'如果這是因爲你總是可以訪問的情況下當前用戶通過'request.user'。您的網址可以是'/ student/profile /',您的視圖將只能呈現當前登錄用戶的相關數據。 –

回答

2

那麼它的簡單:

from django.shortcuts import get_object_or_404 

student = get_object_or_404(Student, pk=student_id, user__id=request.user.id) 

如果用戶嘗試訪問其他用戶的個人資料或動作這將提高404例外。

由於Timmy O'Mahony建議你甚至不需要在url中披露學生ID(如果沒有必要)。剛剛獲得在當前登錄的用戶在request.user,然後用它來讓學生簡介:

def my_student_view(request): 
    user = request.user 
    student = Student.objects.get(user__id=user.id)