2010-07-07 4 views
0

Lors de l'inscription de l'utilisateur J'appelle une fonction personnalisée:Comment envoyer des arguments lors de la demande sous forme

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

Lorsque vous demandez une forme que je dois donner validateEmail argument bool supplémentaire. Ce bien me donner l'erreur:

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'))

Qu'est-ce que je fais mal? Aussi, si je souhaite utiliser cet argument dans mon formulaire, dois-je ajouter une méthode init personnalisée? Comme:

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

Lisez le message d'erreur. Ça dit quoi? Quelle est votre interprétation? –

+0

sohuld J'envoie mes arguments supplémentaires à la fin? – muntu

Répondre

1

Les arguments de mots-clés doivent aller après les arguments de position. Essayez:

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

ok, et qu'en est-il de la modification de la méthode init? Dois-je le faire de cette façon: __init __ (self, request, ** args, ** kwargs) ou différemment? – muntu

+0

Pas nécessaire; vous pouvez suivre la même signature sur la classe parente, sauf avec le paramètre 'validateemail' ajouté. – mipadi

Questions connexes