当前位置: 首页 > 面试题库 >

访问表单内的request.session ['key']时出错。[使用CheckboxSelectMultiple]

朱和惬
2023-03-14
问题内容

我有两个名为GoodAtForm和的表格PaidForForm。这些工作如下…

  1. GoodAtForm从列表中获取输入request.session['love']并将其呈现给用户。

  2. 然后,向用户显示一个CheckboXSelectMultiple字段,以便用户可以选择。

  3. 在视图中提交表单后,用户选择将存储在另一个列表中request.session['good']

4.另一个名为的表单PaidForForm使用该列表进一步询问使用用户的问题,CheckBocSelectMultiple选择来自列表``request.session
[‘good’]”。

我的问题是我无法访问表单内的输出数据以提供查看。

初始化时输入工作正常。我的表单从给定的“爱”列表中呈现“复选框”,但问题是表单未提供输出。它说

 form = GoodAtForm(request.POST)
 input_list = request.session['love']
'QueryDict' object has no attribute 'session'

这是我的 GoodAtForm

class GoodAtForm(forms.Form):
    def __init__(self, request, *args, **kwargs):
        super(GoodAtForm, self).__init__(*args, **kwargs)
        input_list = request.session['love']
        self.fields['good'] = forms.MultipleChoiceField(
            label="Select Things You are Good At",
            choices=[(c, c) for c in input_list],
            widget=forms.CheckboxSelectMultiple
        )

查看GoodAtForm

def show_good_at(request):
    if request.method == 'POST':
        form = GoodAtForm(request.POST)  #it is showing problem here. Throws an exception here
        if form.is_valid():
            if not request.session.get('good'):
                request.session['good'] = []
            request.session['good'] = form.cleaned_data['good']
            return redirect('paid_for')
    else:
        form = GoodAtForm(request=request)  #rendering form as usual from the list 'love'
        return render(request, 'good_at_form.html', {'form':form})

问题答案:

通常,传递给Django表单的第一个“位置”参数是请求数据,您已将其定义request为表单类的第一个参数,但正在request.POST视图中传递

每次实例化表单时,您都需要将请求作为第一个参数传递

form = GoodForm(request, request.POST)

或将请求更改为关键字参数

class GoodAtForm(forms.Form):
    def __init__(self, *args, request=None, **kwargs):
        super().__init__(*args, **kwargs)
        ...

form = GoodForm(request.POST, request=request)


 类似资料:
  • 问题: 能够使用AWS CLI和Boto3成功下载文件。但是,在使用Hadoop/Spark的S3A连接器时,收到以下错误: 配置:在本地计算机上运行此配置 > Spark版本2.4.4 Hadoop版本2.7 贾尔斯补充道: > Hadoop-aws-2.7.3.jar aws-java-sdk-1.7.4.jar Hadoop配置: 读取文件的代码:

  • 我正在尝试从web应用程序连接到azure帐户存储,我得到了以下错误:“类型的异常-'Microsoft。“windows azure . storage . storage exception”在Microsoft.WindowsAzure.Storage.dll中发生,但未在用户代码中处理 其他信息:无法解析远程名称:“xxx.table.core.windows.net” 我在配置中只提供x

  • 问题内容: 我有一个应该将文件发送到Web服务的程序,该程序需要SSL连接。我运行程序如下: 这很好,但是当我将第一行更改为 我收到以下错误: 因此,似乎该问题与我正在使用的JRE有关,但似乎没有意义的是非IBM JRE可以正常工作,而IBM JRE则不能。有什么想法或建议吗? 问题答案: 如果您的非IBM jre是sun,那么它已经附带了SSL类实现。 看来IBM jre根本不包含SSL实现类。

  • 当我提交post方法表单时,给定输入字段值,提交时不获取。如果我在Jquery中使用Ajax调用,那么表单值将序列化并正确提交,但是在javascript中,使用FormData的Ajax调用会出错。 谁能解决我的问题。 错误: > 错误:不能设置报头后,他们被发送。OutgoingMessage.set头(_http_outgoing.js:356: 11) 阿波罗模型拯救未设置键:主键字段:名

  • 我正在尝试使用播放器模块访问android摄像头,但我遇到了以下错误,我不知道如何解决它。 这是我的密码。 我的建筑工人。规格: 有办法解决吗?