You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Django类视图(CBV)中如何不通过URL获取登录用户的PK值

已登录用户主键获取方案

所有实现了会话身份认证体系的Web框架,都会将当前登录用户的实例绑定到请求对象中,无需从URL参数传递即可直接读取主键字段:

Django 框架调用方式

  • 函数视图、类视图均可直接从请求对象读取:
def my_view(request):
    # 先校验用户登录状态,避免匿名用户访问报错
    if request.user.is_authenticated:
        # pk是Django内置的主键别名,兼容自定义主键字段,直接读取即可
        current_user_pk = request.user.pk

Flask 框架调用方式

  • 配合Flask-Login扩展使用时,直接读取全局用户对象:
from flask_login import current_user

@app.route('/your/route')
def your_view():
    if current_user.is_authenticated:
        # 主键字段如果自定义命名,替换下方的id为对应字段名即可
        current_user_pk = current_user.id

Django REST Framework 调用方式

  • 与原生Django逻辑一致,直接从请求对象获取:
from rest_framework.views import APIView
from rest_framework.response import Response

class CustomView(APIView):
    def get(self, request):
        if not request.user.is_authenticated:
            return Response({"msg": "请先登录"}, status=401)
        current_user_pk = request.user.pk
        # 后续业务逻辑

注意:必须先判断用户登录状态,匿名用户不存在对应的用户实例,直接读取属性会抛出异常。

内容的提问来源于stack exchange,提问作者user15999653

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 06:00:02