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

Django表单如何获取当前登录用户的username和email并提交至ClinicalData表

结论

在views.py中实现更简便,同时安全性更有保障

如果选择在模板中实现,需要额外添加两个隐藏的input框存储当前用户的username和email,不但增加了模板的代码量,还存在前端数据被恶意篡改的风险,提交的用户信息可能被替换为其他值。
而在views中实现仅需要修改几行代码,直接从Django自动注入的request.user对象中获取登录用户的真实信息,完全不需要改动现有模板和表单的代码,也不存在数据被篡改的可能。


修改后的views.py参考代码

@login_required(login_url='login')
def scanEnter(request):
    if request.method == 'POST':
        form = ScannerForm(request.POST)
        if form.is_valid():
            # 先不提交到数据库,得到临时的ClinicalData对象
            clinical_data = form.save(commit=False)
            # 直接从request.user获取当前登录用户的真实信息
            clinical_data.username = request.user.username
            clinical_data.email = request.user.email
            # 赋值完成后再提交到数据库
            clinical_data.save()
            return redirect('scanenter')
    else:
        # GET请求时初始化空表单即可
        form = ScannerForm()
    context = {'form': form}
    return render(request, 'scan_enter_fac.html', context)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 14:06:05