Django Key Error:启动表单时'template.html'请求时的KeyError

时间:2018-05-01 12:31:54

标签: python django django-forms stripe-payments

我正在使用Pinax-Stripe库,我想为登录用户创建一个自定义帐户。 I'm trying to rewrite the CreateCustomAccountView() as a function based view。原因是,我不明白CreateBankAccountView来自哪里,而且无处可见in the GitHub code

为简单起见,我有以下表格:

class Form(DynamicForm):
    # some form fields
    def __init__(self, *args, **kwargs):
         self.request = kwargs.pop("request")

views.py

def view(request):
    if request.method == 'POST':
        form = Form(request.POST)
    else:
        form = Form()
    return render(request, 'dashboard/template.html', {'form': form})

我的模板处理器中有request。我不确定为什么会发生这种情况以及如何实例化一个空表单?

2 个答案:

答案 0 :(得分:2)

由于您的表单会弹出request而没有默认值

     self.request = kwargs.pop("request")

您必须将请求传递给表单。例如:

if request.method == 'POST':
    form = Form(request.POST, request=request)
else:
    form = Form(request=request)

答案 1 :(得分:2)

您在基于类的视图中看到的问题是合法的,我想开发人员突然忽略了这部分代码。 如果您仍想使用基于类的视图,请尝试替换:

form_kwargs = super(
        CreateBankAccountView, self
    ).get_form_kwargs(
        *args, **kwargs
    )

使用:

form_kwargs = super(CreateCustomAccountView, self).get_form_kwargs()

该类为CreateCustomAccountViewget_form_kwargs()不带参数。