我有一个学生模型,它具有一对一的默认用户模型字段。
我有一个像example.com/studentid的网址,其中学生ID是一个整数值。
我想知道如何检查网址中的studentid是否等于已登录用户的学历?
这是为了确保登录的人只能查看他自己的个人资料而不是任何其他学生资料,即使他随机更改了网址中的studentid值。
答案 0 :(得分: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
建议您甚至不需要在网址中披露学生ID(如果没有必要)。只需获取request.user
中当前登录的用户,然后使用该用户获取学生资料:
def my_student_view(request):
user = request.user
student = Student.objects.get(user__id=user.id)