Bonjour,
Je suis amateur en développement web et je voudrais savoir quelle est la bonne pratique concernant la gestion des données POST.
- Je déteste revenir en arrière sur un formulaire et devoir renvoyer les données pour avoir le droit de voir la page.
- J'aime faire en sorte que tout envoi de données POST se fasse sur une url réservée au traitement des données qui redirige ensuite vers le formulaire initial (en sauvegardant les erreurs éventuelles dans la session). Je peux alors redessiner le formulaire avec les erreurs inlines, ou afficher un message de succès.
Avec cette technique, je peux faire page-avant-page-arrière autant que je veux, il n'y aura aucun changement côté serveur (tant que pas de clic sur un bouton "submit"). Je trouve ça logique et plus agréable.
Seulement je me rends compte que cette pratique n'est pas utilisée dans Django (http://docs.djangoproject.com/en/dev...-a-simple-form) ou dans l'application django-registration (http://bitbucket.org/ubernostrum/django-registration/) :
Code Python : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 def register(request, backend, success_url=None, form_class=None, disallowed_url='registration_disallowed', template_name='registration/registration_form.html', extra_context=None): backend = get_backend(backend) if not backend.registration_allowed(request): return redirect(disallowed_url) if form_class is None: form_class = backend.get_form_class(request) if request.method == 'POST': form = form_class(data=request.POST, files=request.FILES) if form.is_valid(): new_user = backend.register(request, **form.cleaned_data) if success_url is None: to, args, kwargs = backend.post_registration_redirect(request, new_user) return redirect(to, *args, **kwargs) else: return redirect(success_url) else: form = form_class() if extra_context is None: extra_context = {} context = RequestContext(request) for key, value in extra_context.items(): context[key] = callable(value) and value() or value return render_to_response(template_name, {'form': form}, context_instance=context)
Ci-dessus dans la vue "register" on a un "if request.method == 'POST': else:".
Quelle est l'inconvénient de ma méthode ?
Merci
Partager