【问题标题】:How to send arguments when requesting form请求表单时如何发送参数
【发布时间】:2010-07-07 01:14:27
【问题描述】:

在用户注册期间,我正在调用一些自定义函数:

def user_created(sender, user, request, **kwargs):
    form = ExtendedRegistrationForm(validateemail=True, request.POST, request.FILES)

请求表单时,我需要提供额外的布尔参数 validateemail。这虽然给了我错误:

Exception Type: SyntaxError at / Exception Value: ('non-keyword arg after keyword arg', ('/home/myapp/regbackend.py', 59, None, 'form = ExtendedRegistrationForm(dontvalidateemail=True, request.POST, request.FILES)\n'))

我做错了什么?另外,如果我想在我的表单中使用这个参数,我需要添加一个自定义的 init 方法吗?喜欢:

def __init__(self, *args, **kwargs):
    try:
        validate = args['validate']
    except:
        pass           
    if not validate:
        validate = False           
    super(ExtendedRegistrationForm, self).__init__(*args, **kwargs)

【问题讨论】:

  • 阅读错误信息。它说什么?你对此有何解释?
  • 我应该在最后发送我的附加论点吗?

标签: django django-forms validation


【解决方案1】:

关键字参数必须在位置参数之后。试试:

form = ExtendedRegistrationForm(request.POST, request.FILES, validateemail=True)

【讨论】:

  • 好的,那么修改init方法呢?我应该这样做:__init__(self, request, **args, **kwargs) 还是其他方式?
  • 没有必要;除了添加 validateemail 参数之外,您可以在父类中遵循相同的签名。
猜你喜欢
  • 2015-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-23
  • 2017-02-11
  • 1970-01-01
  • 2012-06-02
  • 2019-04-28
相关资源
最近更新 更多