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

Django获取POST动态值跳转图形函数时遇AttributeError问题

解决AttributeError: 'formGraphicChoice' object has no attribute 'user'问题

问题根源

错误表明create_graphics1_logic函数中尝试访问form.user,但你的formGraphicChoice表单类并未定义user属性——user是Django请求对象(request)的属性,不属于表单对象。

修复方案

1. 传递request对象给图形生成函数

在page_choice视图调用create_graphics1_logic时,同时传入request参数,而非仅传表单:

# 原错误调用
create_graphics1_logic(form)

# 修改后
create_graphics1_logic(request, form)

2. 调整图形生成函数的参数与内部逻辑

更新create_graphics1_logic的定义,接收request作为参数,通过request.user获取当前用户:

def create_graphics1_logic(request, form):
    # 替换原form.user为request.user
    current_user = request.user
    # 读取表单清理后的数据
    start_date = form.cleaned_data['start_date']
    end_date = form.cleaned_data['end_date']
    # 后续图形生成逻辑...

3. 表单类直接绑定user(可选)

如果表单本身需要使用user做验证或数据过滤,可以在表单初始化时传入user:

# forms.py中的formGraphicChoice类
class formGraphicChoice(forms.Form):
    start_date = forms.DateField()
    end_date = forms.DateField()
    graphic_choice = forms.ChoiceField(choices=[('graphic1', '图形1'), ('graphic2', '图形2')])

    def __init__(self, *args, **kwargs):
        self.user = kwargs.pop('user', None)
        super().__init__(*args, **kwargs)

然后在视图实例化表单时传入user:

# inter_page_composition或page_choice视图中
form = formGraphicChoice(request.POST or None, user=request.user)

额外检查点

确保page_choice视图正确处理表单提交流程:仅当请求为POST且表单验证通过时,才调用图形生成函数:

def page_choice(request):
    if request.method == 'POST':
        form = formGraphicChoice(request.POST)
        if form.is_valid():
            return create_graphics1_logic(request, form)
    # 其他页面渲染逻辑...

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 07:12:57