IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Django Python Discussion :

formulaire avec django


Sujet :

Django Python

  1. #1
    Membre averti
    Inscrit en
    Mars 2010
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 55
    Par défaut formulaire avec django
    Bonjour, donc voila tout t'abord j'utilise django.
    Donc en faite j'aimerais faire un formulaire sur mon site avec des champs voici mon models.py :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    class Organisation(models.Model):
    name = models.CharField(max_length=30)
    icon = models.ImageField(upload_to='/tmp')
    category = models.CharField(max_length=30)
    twitter_name = models.CharField(max_length=15)




    J'ai bien creer la table dans la base et tout seulement je ne sais pas comment faire en sorte que lorsque je remplie le formulaire les donnees soit ecrite dans la base de donnee j'ai suivit de nombreux tutorial mais rien a faire merci d'avance pour votre aide.

  2. #2
    Nouveau membre du Club
    Inscrit en
    Mars 2010
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 9
    Par défaut
    Code : 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
    # forms.py
     
    from django import forms
    from somewhere.models import Organisation
     
    class OrganisationForm(forms.ModelForm):
        class Meta:
            model = Organisation
     
    # views.py
    from somewhere.forms import OrganisationForm
    from django.shortcuts import render_to_response
     
    def something(request):
        #...
        form = OrganisationForm()
     
        if request.method == 'POST':
            form = OrganisationForm(request.POST) # ,request.FILES...
            if form.is_valid():
                obj = form.save()
        return render_to_response('le_fichier.html', locals())
        #...
    dans le_fichier.html

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <form method="POST" action="{% url a_changer... %}">
        {{ form.as_p }}
    </form>

  3. #3
    Membre averti
    Inscrit en
    Mars 2010
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 55
    Par défaut
    desole j'ai pas tout suivit la car j'ai un souci c'est pour le fichier html aussi c'est pas evident.

  4. #4
    Nouveau membre du Club
    Inscrit en
    Mars 2010
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 9
    Par défaut
    MAJ.

  5. #5
    Membre averti
    Inscrit en
    Mars 2010
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 55
    Par défaut
    Merci par contre j'ai une petite erreur :

    Exception Value: No module named somewhere.models

    edit:
    Non j'ai rien dit desole par contre comment recuperer les donnees car voila mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    def Organisations(request):
        #...
        form = OrganisationForm()
     
        if request.method == 'POST':
            form = OrganisationForm(request.POST) # ,request.FILES...
            if form.is_valid():
                form.save()
        #...
    	return  HttpResponseRedirect('flatpages/formulaire.html')
        else:
            form = OrganisationForm()
        return render_to_response('flatpages/index.html',
        {'form': form})

    Et je tombe directement sur index.html

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2010
    Messages : 49
    Par défaut
    Remplace somewhere.models par le modèle que tu souhaites utiliser (le_nom de_ton_app.models)

  7. #7
    Membre averti
    Inscrit en
    Mars 2010
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 55
    Par défaut
    Bonjour, une petite question que veut dire la ligne :

    Et comment faire si je veut afficher d'autre modele merci

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2010
    Messages : 49
    Par défaut
    Damien, il faut lire la doc
    Un coup de google t'aurais permis de trouver la réponse.

    Ce tag permet effectuer le rendu du formulaire sous la forme de paragraphes (on peut également le faire en table ou ul).

    D'une manière générale, le principe de django est le suivant.

    • La requête est parsée dans un urls.py, qui renvoie vers une views.
    • La views va piocher les données dans un models.
    • Les données choisies sont incluses dans un contexte, transmis au template qui va les afficher.


    Tu as des tonnes de tutos, (dont le djangobook) librement consultables.

  9. #9
    Membre averti
    Inscrit en
    Mars 2010
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 55
    Par défaut
    Merci pour cette reponse c'est juste que sur les tutorial je ne trouve pas si par exemple j'ai deux modeles organisation et adresse comment afficher les deux si je met

    {{ form }} j'ai seulement le premier, j'ai surement pas compris un truc simple .

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2010
    Messages : 49

  11. #11
    Membre averti
    Inscrit en
    Mars 2010
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 55
    Par défaut
    D'accord si j'ai bien compris dans ma page html je met le code suivant si je veut utiliser les prefix desoler de t'embeter mais c'est que je comprend pas tous dans les tutos.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    {% m = OfferForm(prefix="m") %}
    {{ m.as_ul() }}

  12. #12
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2010
    Messages : 49
    Par défaut
    Ce serait plutôt ce principe (dans ta views)
    Code : 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
     
    def une_view(request):
               if request.method = "POST":
                  form_1 = Model1Form(request.POST, prefix="1")
                  form_2 = Model2Form(request.POST, prefix="2")
                  if form_1.is_valid() and form_2.is_valid():
                        ....du code
                       return httpquelquechose
               else:
                  form_1 = ModelAForm(prefix="1")
                  form_1 = ModelBForm(prefix="1")
     
               tonContexte = {
                  "form_1": form_1,
                  "form_2": form_2,
               }
               return render_to_response('templateform.html', tonContexte)
    C'est le principe, j'ai pas le temps de tester...

  13. #13
    Membre averti
    Inscrit en
    Mars 2010
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 55
    Par défaut
    Merci bien ca fonctionne tres bien je te remercie encore pour cette aide.

    J'ai juste une petite question si tu a le temps de jeter un petit coup d'oeil sur mon code:

    Car apres avoir remplie le formulaire il me met

    Page not found (404)
    Request Method: GET
    Request URL: http://127.0.0.1:8000/Organisations/...ormulaire.html


    voici mon fichier views :


    Code : 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
    def Organisations(request):
        #...
        form_1 = OrganisationForm()
        form_2 = AddressForm()
     
        if request.method == 'POST':
            #On copie les donnees POST
            data = request.POST.copy()
     
            form_1 = OrganisationForm(request.POST , prefix="1") # ,request.FILES...
            form_2 = AddressForm(request.POST, prefix="2")
            if form_1.is_valid() and form_2.is_valid() :
                form_1.save()
                form_2.save()
                message = " Enregistre avec succes !"
            return  HttpResponseRedirect('flatpages/formulaire.html')
     
        else:
            form_1 = OrganisationForm()
            form_2 = AddressForm()
            tonContexte = {
                           "form_1": form_1,
                           "form_2": form_2,
                           }
     
            return render_to_response('flatpages/formulaire.html', tonContexte)

    Et mon fichier url's


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     (r'^Organisations/$', Organisations),
         (r'^Organisations/flatpages/*.html$', Organisations),

    merci d'avance

  14. #14
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2010
    Messages : 49
    Par défaut
    Tu as mis la bonne methode dans ton template (post)

  15. #15
    Membre averti
    Inscrit en
    Mars 2010
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 55
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <center><h1>Organisation</h1><br/></center>
    <hr/>
    <form action="/Organisations/" method="post">
     
    <h3>Inscription</h3><br/>
    <table> {{ form_1 }} </table>
    <br/>
    <br/>
    <table> {{ form_2 }} </table>
    <br/><br/>
    * optional
    <br/><br/>
    <input type="submit" class="send" name="send" value="add" />
    </form>

    Voici mon code html j'ai bien mit la methode post et mon fichier ce trouve bien :
    damien_project/Organisations/templates/flatpages/formulaire.html



    Edit j'ai un autre probleme beaucoup plus grave je pense rien n'est ajoute dans ma base de donnee

  16. #16
    Membre confirmé
    Profil pro
    Développeur Back-End
    Inscrit en
    Septembre 2007
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Septembre 2007
    Messages : 81
    Par défaut
    Code : 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
     
    def Organisations(request):
        #...
        form_1 = OrganisationForm()
        form_2 = AddressForm()
     
        if request.method == 'POST':
            #On copie les donnees POST
            data = request.POST.copy()
     
            form_1 = OrganisationForm(request.POST , prefix="1") # ,request.FILES...
            form_2 = AddressForm(request.POST, prefix="2")
            if form_1.is_valid() and form_2.is_valid() :
                form_1.save()
                form_2.save()
                message = " Enregistre avec succes !"
            return  HttpResponseRedirect('flatpages/formulaire.html')
     
        else:
            form_1 = OrganisationForm()
            form_2 = AddressForm()
            tonContexte = {
                           "form_1": form_1,
                           "form_2": form_2,
                           }
     
        return render_to_response('flatpages/formulaire.html', tonContexte)
    j'ai juste decalé ton dernier return pour que tu n'es pas une erreur si le formulaire n'est pas valide.

  17. #17
    Membre averti
    Inscrit en
    Mars 2010
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 55
    Par défaut
    Merci donc je tombe bien sur la page index.html donc normalement sa devrais fonctionner mais non rien dans ma base de donne.


    Edit : je voulais savoir comment je fais si je veut un champ mot de passe et un autre pour etre sur d'avoir taper le bon mot de passe ?

  18. #18
    Membre averti
    Inscrit en
    Mars 2010
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 55
    Par défaut
    Personne ne sais comment ajouter un champ mot de passe ? sinon pour mon precedent probleme j'ai resolu le probleme c'est bon il falait juste enlever (prefix 1).

  19. #19
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2010
    Messages : 49
    Par défaut
    Avec les widgets

  20. #20
    Membre averti
    Inscrit en
    Mars 2010
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 55
    Par défaut
    C'est ce que j'ai cru lire seulement j'ai essayer de le mettre en place mais pas moyen car moi je declare seulement sa dans mon fichier forms.py

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    class OrganisationForm(forms.ModelForm):
        class Meta:
            model = Organisation

    Edit :

    car en faite si je met ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    class OrganisationForm(forms.ModelForm):
        pw = forms.CharField( widget=forms.PasswordInput, label="Password" )      
        class Meta:
            model = Organisation
    J'ai bien le champ mot de passe sur ma page mais pas dans ma base de donne.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. formulaire dynamique avec django
    Par bernards111 dans le forum Django
    Réponses: 1
    Dernier message: 24/01/2012, 12h46
  2. Vérification de formulaire avec regexp
    Par Shadow aok dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 06/08/2007, 11h57
  3. Créer un formulaire avec VBA ?
    Par Jean Bonnisme dans le forum VBA Access
    Réponses: 3
    Dernier message: 14/10/2004, 10h40
  4. Réponses: 10
    Dernier message: 10/06/2004, 16h20
  5. Gestion de formulaire avec xml et sans serveur ?
    Par meliane dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 05/05/2004, 19h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo