Django-fr

Forum

  • Accueil
  • » Django-fr
  • » Page de confirmation d'un formulaire avec HttpResponseRedirect

#1 11-02-2015 05:49:26

nolimitech
Membre
Inscription : 11-02-2015
Messages : 14

Page de confirmation d'un formulaire avec HttpResponseRedirect

Bonsoir à tous,

J'ai un problème concernant HttpResponsesRedirect..

J'ai créer une page de Contact.
J'arrive à envoyer le e-mail via les serveurs, mais pas la page de confirmation.

J'ai trouvé quelques exemples, mais aucun n'a besoin du /urls.py.
Pourtant moi, il me dit qu'il ne le trouve pas de page. Erreur 404

mysite/templates/contact/contact.html
mysite/templates/contact/confirm.html ( si django n'en fournit pas..  )

mysite/contact/forms.py

mysite/contact/urls.py
Je dois rien mettre dans urls ( selon les exemples )

mysite/contact/views.py :

#-*- coding:Utf-8 -*-

from contact.forms import ContactForm
from django.shortcuts import render
from datetime import datetime
from django.http import HttpResponseRedirect
# Create your views here.

def contact(request):

    if request.method == 'POST':  # S'il s'agit d'une requête POST
        form = ContactForm(request.POST) #On reprend les données
 
        if form.is_valid(): # On vérifie que les données envoyées sont valides
 
            # Ici on peut traiter les données du formulaire
            sujet = form.cleaned_data['sujet']
            message = form.cleaned_data['message']
            envoyeur = form.cleaned_data['envoyeur']
            renvoi = form.cleaned_data['renvoi']
 
            destinataires = ['monemail@mail.com']
            if renvoi:
                destinataires.append(envoyeur)
 
            # On envoie le mail grâce à une fonction fourni par Django
            from django.core.mail import send_mail
            send_mail(sujet, message, envoyeur, destinataires)
 
            return HttpResponseRedirect('confirm/')  # On redirige l'utilisateur vers une page de confirmation

    else: # Si c'est pas du POST, c'est probablement une requête GET
        form = ContactForm()  # On crée un formulaire vide
 
    return render(request, 'contact/contact.html', {'form': form,'current_date': datetime.now()})  # On envoie le template avec le formulaire qu'on a construit plus haut

#J'essayait de créer un fonction pour remplacer HttpResponseRedirect
def confimation(request):
    return render(request, 'contact/confirm.html', {'current_date':    datetime.now()})

Es-ce que la page de confirmation, viens avec le formulaire via django ( déjà tout fait ) ?

Sinon, comment je dois lui renvoyez ma page de confirmation /contact/confirm.html

merci d'avance pour vos réponses

A+

Hors ligne

#2 11-02-2015 14:45:09

Xavier Ordoquy
Administrateur
Lieu : Puteaux, France
Inscription : 12-10-2011
Messages : 312
Site Web

Re : Page de confirmation d'un formulaire avec HttpResponseRedirect

Tu rediriges vers une page en relatif. Attention donc à ce que ton fichiers urls.py corresponde.
Le mieux reste de faire un redirect en absolu:

return HttpResponseRedirect('/confirm/')

Hors ligne

#3 11-02-2015 21:49:27

nolimitech
Membre
Inscription : 11-02-2015
Messages : 14

Re : Page de confirmation d'un formulaire avec HttpResponseRedirect

Salut et merci pour ta réponse rapide smile

Mais c'est exactement ça que je comprend pas.
Si le lien est en absolu

Où prend t'il la page de confirmation?
Avoir utiliser un return Render('/contact/confirm.html'), là il trouverait, mais un HttpResponsesRedirect... en lien absolu, aucune idée..
Tout ce que ça me dit c'est qu'il trouve pas le lien url...

return HttpResponseRedirect('/confirm/')

le '/confirm/', quand j'écris cela,django debug_me dit qu'il n'y a pas de urls.

Using the URLconf defined in nltsite.urls, Django tried these URL patterns, in this order:
^/?$
^union/
^contact/ ^/?$
^forum/$
^forum/(?P<forum_id>\d+)/$
^thread/(?P<thread_id>\d+)/$

Donc dans urls.py ( du programme ) j'écris quoi? en lien absolu.. C'est là que je bloque, puisque tous les exemples
de documentation django ne parle aucunement du fichier urls.py

Uniquement la modification de ; views.py, forms.py, settings.py, templates

Je vais faire des recherches sur les liens absolu
Merci encore et d'avance big_smile)

Hors ligne

#4 12-02-2015 11:40:09

Xavier Ordoquy
Administrateur
Lieu : Puteaux, France
Inscription : 12-10-2011
Messages : 312
Site Web

Re : Page de confirmation d'un formulaire avec HttpResponseRedirect

Il te manque la vue et l'url associée à ta page de confirmation.
Le Render est simplement un affichage d'une page et non une redirection.

Hors ligne

#5 15-02-2015 01:22:21

nolimitech
Membre
Inscription : 11-02-2015
Messages : 14

Re : Page de confirmation d'un formulaire avec HttpResponseRedirect

Merci, je sais pas pourquoi, mais j'ai trouvé le problème

dans le contact/urls.py

je dois enlever le patterns('contact.views',)
par patterns('',)

et mettre ceci..

urlpatterns = patterns('',
    url(r'^/?$', 'contact.views.contact'),
    url(r'^confirm/', 'contact.views.confirmation'),
)

Ça reviens au même, pourtant. wink

Résolus cool

Merci de ton aide.

Dernière modification par nolimitech (15-02-2015 01:22:42)

Hors ligne

  • Accueil
  • » Django-fr
  • » Page de confirmation d'un formulaire avec HttpResponseRedirect

Pied de page des forums