我有一个学生模型,它具有与默认用户模型一对一的字段。
我有一个像 example.com/studentid 这样的 url,其中学生 id 是一个整数值。
我想知道如何检查url中的studentid是否等于登录者的studentid?
这是为了确保登录的人只能查看自己的个人资料,而不能查看任何其他学生的资料,即使他随机更改了url中studentid的值。
我有一个学生模型,它具有与默认用户模型一对一的字段。
我有一个像 example.com/studentid 这样的 url,其中学生 id 是一个整数值。
我想知道如何检查url中的studentid是否等于登录者的studentid?
这是为了确保登录的人只能查看自己的个人资料,而不能查看任何其他学生的资料,即使他随机更改了url中studentid的值。
那么它很简单:
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)