📜  django 获取表单中的当前用户 - Python (1)

📅  最后修改于: 2023-12-03 15:14:44.509000             🧑  作者: Mango

Django 获取表单中的当前用户

在 Django 中,我们可以轻松地获取当前登录用户的信息,只需使用 request.user 即可访问当前用户的信息。

在表单中,如果我们需要获取当前用户的信息,可以通过以下步骤实现:

  1. 在视图函数中将当前用户作为参数传递给表单
  2. 在表单中定义一个隐藏字段存储当前用户的 ID
  3. 在表单提交时,从隐藏字段中获取当前用户的 ID

以下是示例代码实现上述步骤:

# views.py
from django.shortcuts import render
from django.http import HttpResponse

def my_view(request):
    user_id = request.user.id
    # 向表单传递当前用户的 ID
    return render(request, 'my_form.html', {'user_id': user_id})

# my_form.html
<form method="POST">
  {% csrf_token %}
  <!-- 定义一个隐藏字段存储当前用户的 ID -->
  <input type="hidden" name="user_id" value="{{ user_id }}">
  <!-- 其他表单字段 -->
  <input type="text" name="name" placeholder="名称">
  <input type="email" name="email" placeholder="电子邮件">
  <button type="submit">提交</button>
</form>

# views.py
from django.shortcuts import render
from django.http import HttpResponse

def my_view(request):
    if request.method == 'POST':
        user_id = request.POST.get('user_id')
        # 根据 user_id 获取当前用户对象
        current_user = User.objects.get(id=user_id)
        # 其他表单字段的处理
        name = request.POST.get('name')
        email = request.POST.get('email')
        # 处理完成后返回结果
        return HttpResponse('表单数据已提交')
    else:
        return HttpResponse('请填写表单')

以上示例代码实现了表单中获取当前用户的 ID,并且在表单提交时根据 ID 获取用户对象。需要注意的是,这里的 User 是 Django 默认的用户模型,如果你使用了自定义的用户模型,请将其替换为对应的模型。