0

我有一个 django 表单,我正在尝试添加 CAPTCHA 支持。但是,这需要我将 request.session 传递给表单。为此,我将此构造函数添加到表单中:

def __init__(self, request=None, *args, **kwargs):
    super(RegistrationForm, self).__init__(*args, **kwargs)
    self.request = request

然后我通过将请求对象传递给它来实例化 RegistrationForm。但是,在提交表单时,它无法清除任何字段。它只是验证失败并将一个空白字段传递回模板。这是失败的注册码:

if request.method == 'POST':
    form = RegistrationForm(request.POST)
    if form.is_valid():
        ...do registration...
    else:
        return render(request, 'template.htm', {'form': form})

无论我在字段中输入什么,它都不会验证。事实上,它甚至看起来都不像清理田地。点击注册按钮后,我只是返回一个新的空白表格,没有错误,什么都没有。

有任何想法吗?

4

1 回答 1

2

request.POST根据您发布的代码,看起来好像您正在request传递RegistrationForm. 即你正在做相当于:

form = RegistrationForm(request=request.POST)

你真正想做的是:

form = RegistrationForm(request=request, data=request.POST)

试试这个,看看它是否适合你。

于 2013-07-29T03:48:29.520 回答