J'essayais d'implémenter la soumission de formulaire Ajax comme contexte donné AJAX Form Submission(inline success) mais cela ne fonctionne pas dans mon cas, voici mon code.Impossible d'implémenter la soumission de formulaire AJAX (succès en ligne) avec deform_bootstrap
@view_config(route_name='add_user', permission='admin', renderer='add_user.mako')
def add_user(self):
#adding succeed method as per given context in above link.
def succeed():
return Response('<div id="thanks">Thanks!</div>')
schema = UserSchema(validator = user_DoesExist).bind(request=self.request)
#Form defined with use_ajax=True.
form = deform.Form(schema, action=self.request.route_url('add_user'), buttons=('Add User','Cancel'), use_ajax=True)
if 'Cancel' in self.request.params:
return HTTPFound(location = self.request.route_url('home'))
if 'Add_User' in self.request.params:
appstruct = None
try:
appstruct = form.validate(self.request.POST.items())
except deform.ValidationFailure, e:
log.exception('in form validated')
return {'form':e.render()}
newuser = User(username=appstruct['username'],
name=appstruct['name'],
extension=appstruct['extension'],
pin=appstruct['pin'],
status=1)
DBSession.add(newuser)
DBSession.flush()
return dict(form=form.render(success=succeed))
return dict(form=form.render(appstruct={}))
Sortie: Le formulaire de soumission du code est exécuté, mais la forme sur l'écran reste inchangé mais il n'exécute pas la méthode de réussir(). :(
Et si l'essayer avec exactement le même contexte comme indiqué dans le lien ci-dessus comme
@view_config(route_name='add_user', permission='admin', renderer='add_user.mako', name='ajaxform')
@demonstrate('AJAX form submission (inline success)')
def ajaxform(self):
#adding succeed method as per given context in above link.
def succeed():
return Response('<div id="thanks">Thanks!</div>')
schema = UserSchema(validator = user_DoesExist).bind(request=self.request)
#Form defined with use_ajax=True.
form = deform.Form(schema, action=self.request.route_url('add_user'), buttons=('Add User','Cancel'), use_ajax=True)
if 'Cancel' in self.request.params:
return HTTPFound(location = self.request.route_url('home'))
if 'Add_User' in self.request.params:
appstruct = None
try:
appstruct = form.validate(self.request.POST.items())
except deform.ValidationFailure, e:
log.exception('in form validated')
return {'form':e.render()}
newuser = User(username=appstruct['username'],
name=appstruct['name'],
extension=appstruct['extension'],
pin=appstruct['pin'],
status=1)
DBSession.add(newuser)
DBSession.flush()
return self.render_form(form, success=succeed)
return dict(form=form.render(appstruct={}))
Sortie: NameError: nom 'démontrer' ne définit pas
si je retire cette ligne @demonstrate ('Soumission de formulaire AJAX (succès en ligne)')
que je ne me donne erreur:
AttributeError: objet 'UsersView' n'a pas d'attribut 'render_form'
Besoin d'aide pour effectuer une soumission de formulaire ajax en utilisant deform_bootstrap.
Merci,
me corriger si je me trompe quelque part. :)