【问题标题】:check user credentials in django在 django 中检查用户凭据
【发布时间】:2013-06-19 09:23:26
【问题描述】:

我有一个 Student 模型,它具有与默认用户模型一对一的字段。

我有一个类似 example.com/studentid 的网址,其中学生 ID 是一个整数值。

我想知道如何检查url中的studentid是否与登录的人的studentid相等?

这是为了确保已经登录的人即使随机更改了url中studentid的值,也只能查看自己的个人资料,而不能查看其他学生资料。

【问题讨论】:

  • 如果是这种情况,您不需要在 url 中使用 student_id,因为您始终可以通过 request.user 访问当前用户。您的 url 可以是 /student/profile/ 并且您的视图将能够仅呈现当前登录用户的相关数据。

标签: python django django-models django-views


【解决方案1】:

其实很简单:

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 建议的那样,您甚至不需要在网址中透露学生证(如果没有必要)。只需在request.user 中获取当前登录的用户,然后使用它来获取学生资料:

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

【讨论】:

    猜你喜欢
    • 2013-11-12
    • 1970-01-01
    • 2019-02-04
    • 2012-05-10
    • 2017-09-30
    • 2012-11-13
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多