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
相关产品推荐
相关产品推荐

