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

Python Discussion :

récupérer les données d'un formulaire dans un tableau


Sujet :

Python

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2014
    Messages : 17
    Points : 7
    Points
    7
    Par défaut récupérer les données d'un formulaire dans un tableau
    Bonjour,

    je débute actuellement avec le création d'un site web qui aurait pour but de permettre à une entreprise de renseigner pour chaque adresse ip d'une machine un dns.

    Ma page d'accueil liste les machines deja présentes au sein de l'entreprise, dans un tableau. J'ai créé un lien "ajouter une machine" à la fin de ce tableau, qui redirige vers une page permettant de renseigner le nom d'une nouvelle machine grâce à un formulaire.

    Je voudrais maintenant que la machine renseignée dans ce formulaire puisse apparaitre sur ma page d'accueil, dans le tableau, à la suite des machines deja inscrites dans celui-ci.

    Voilà ce que j'ai codé pour le formulaire dans ma page views.py :

    class Saisie_machines(forms.Form):
    ajout = forms.CharField(max_length=200)

    def Saisie(request):
    if request.method == 'POST':
    form = Saisie_machines(request.POST)
    if form.is_valid():
    ajout = form.cleaned_data['ajout']
    return render(request,'dns_app/accueil.html', locals())
    else:
    form = Saisie_machines()

    return render_to_response('dns_app/formulaire.html', { 'form': form, }, context_instance=RequestContext(request))

    Quelqu'un peut-il m'aider ?

    Merci

  2. #2
    Membre confirmé
    Avatar de vincent.mbg
    Homme Profil pro
    Développeur Python
    Inscrit en
    Décembre 2007
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Python

    Informations forums :
    Inscription : Décembre 2007
    Messages : 327
    Points : 618
    Points
    618
    Par défaut
    Bonjour,

    J'imagine que ta page d'accueil liste les machines via un modèle du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    class Machine(models.Model) :
        nom = models.CharField()
        ...
    Dans ce cas, tu peux utiliser la class ModelForm au lieu de Form
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    class Saisie_machines(forms.ModelForm):
        class Meta:
            model = Machine
        fields = ( 'nom', ) # Les nom de ton modèle à faire apparaitre dans ton form.

    Autre chose, par convention les noms des classes en python s'écrivent en CamelCase
    SaisieMachines et non Saisie_machines de plus si tu l'appelles MachineModelForm ça sera beaucoup plus parlant


    @+
    Mon guide pour apprendre Tkinter - N'oubliez pas de consulter les FAQ Python ou de visiter mon blog

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2014
    Messages : 17
    Points : 7
    Points
    7
    Par défaut merci
    Merci pour cette réponse, impeccable ! Tu saurais me conseiller sur de la doc ?

    Je cherche des infos sur la façon dont je peut ajouter à mon tableau d'accueil un bouton pour supprimer/modifier le nom des différentes machines...

    Merci encore !

  4. #4
    Membre confirmé
    Avatar de vincent.mbg
    Homme Profil pro
    Développeur Python
    Inscrit en
    Décembre 2007
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Python

    Informations forums :
    Inscription : Décembre 2007
    Messages : 327
    Points : 618
    Points
    618
    Par défaut
    Pour la documentation, c'est ici:

    https://docs.djangoproject.com/en/1.5/ (anglais) et ici https://docs.djangoproject.com/fr/1.5/ en (français)

    La version française n'est pas complète.

    Et tu as ce site qui te servira à coup sûr lorsque tu aura un peu pris en main Django.

    http://ccbv.co.uk/

    Pour supprimer et modifier, regarde du coté des "Class Base View" UpdateView et DeleteView

    fichier view.py
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    class MachineUpdateView(UpdateView):
        model = Machine
        fields = ['name']
        template_name = 'mon_template.html'
    Puis ds ton fichier url tu ajoute un lien vers cette vue.

    Dans ta page d'accueil tu ajoute des liens vers cette vue du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    {% for machine in list_machine %}
         Du code html pour mon tableau ... 
        <td>
             {{ machine.name }}
        </td>
         <td>
             <a href="{% url 'nom_de_lurl_vers_ma_vue_update' pk=machine.pk %}">modifier</a>
         </td>
         ... 
    {% endfor %}
    @+
    Mon guide pour apprendre Tkinter - N'oubliez pas de consulter les FAQ Python ou de visiter mon blog

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2014
    Messages : 17
    Points : 7
    Points
    7
    Par défaut
    Super merci vincent.mbg

  6. #6
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2014
    Messages : 17
    Points : 7
    Points
    7
    Par défaut
    Bonjour,

    je bloque sur une erreur que je ne peux résoudre

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    class MachineUpdateView(UpdateView):
            model = Machine
            fields = ['nom']
            template_name = 'accueil.html'
     
    class MachineDeleteView(DeleteView):
            model = Machine
            success_url = reverse_lazy('machine-list')
    j'ai bien ajouté une url pour chacune de ces classes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     url(r'^Machine/update/(?P<pk>\d+)/$', 'dns_app.views.MachineUpdateView'),
            url(r'^Machine/delete/(?P<pk>\d+)/$', 'dns_app.views.MachineDeleteView'),
    mais voici ce qui m'est retourné :

    __init__() takes exactly 1 argument (3 given)

  7. #7
    Membre confirmé
    Avatar de vincent.mbg
    Homme Profil pro
    Développeur Python
    Inscrit en
    Décembre 2007
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Python

    Informations forums :
    Inscription : Décembre 2007
    Messages : 327
    Points : 618
    Points
    618
    Par défaut
    Bonjour,

    Pour ton problème, lorsque tu utilises le CBV (Class base View) comme DeleteView, UpdateVIew ...
    tu dois utiliser la méthode as_view() dans les urls.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    url(r'^Machine/update/(?P<pk>\d+)/$', dns_app.views.MachineUpdateView.as_view()),
    url(r'^Machine/delete/(?P<pk>\d+)/$', dns_app.views.MachineDeleteView.as_view()),
    Sinon utilise les balises CODE quand tu écris du code sur un forum (Le bouton avec un #) et n'oublie pas le bouton résolu si ça marche.
    Mon guide pour apprendre Tkinter - N'oubliez pas de consulter les FAQ Python ou de visiter mon blog

  8. #8
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2014
    Messages : 17
    Points : 7
    Points
    7
    Par défaut
    Désolée je débute avec les forums

    Merci de t'intéresser à nouveau à mon pb...

    J'ai en effet remarqué qu'il fallait utilisé as_view( ), cependant cette syntaxe n'est pas très appréciée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    url(r'^Machine/update/(?P<pk>\d+)/$', dns_app.views.MachineUpdate.as_view()),
            url(r'^Machine/delete/(?P<pk>\d+)/$', dns_app.views.MachineDelete.as_view()),
    Exception Value: 'module' object has no attribute 'views'
    Exception Location: /home/sarah/switch_conf/dns_app/urls.py in <module>, line 19

    Devrais-je modifier quelque chose dans mon modèle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    class Machine(models.Model):
            nom = models.CharField(max_length=200)
            def __unicode__(self):
                    return self.nom
    (où se trouve le bouton résolu :$ :$ :$ :$)

  9. #9
    Membre confirmé
    Avatar de vincent.mbg
    Homme Profil pro
    Développeur Python
    Inscrit en
    Décembre 2007
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Python

    Informations forums :
    Inscription : Décembre 2007
    Messages : 327
    Points : 618
    Points
    618
    Par défaut
    Devrais-je modifier quelque chose dans mon modèle
    Non, ça ne viens pas du modèle, mais plutôt de comment tu organises tes imports.

    Essais de faire dans ton fichier url
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    import  views
     
    url(r'^Machine/update/(?P<pk>\d+)/$',  views.MachineUpdate.as_view()),
    url(r'^Machine/delete/(?P<pk>\d+)/$',   views.MachineDelete.as_view()),
    Ca marche ?

    (où se trouve le bouton résolu :$ :$ :$ :$)
    En bas à gauche quand tu affiches le fil de la discussion.
    Mon guide pour apprendre Tkinter - N'oubliez pas de consulter les FAQ Python ou de visiter mon blog

  10. #10
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2014
    Messages : 17
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par vincent.mbg Voir le message
    En bas à gauche quand tu affiches le fil de la discussion.
    Oui pardon !!

    Lorsque j'essais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    import views 
    url(r'^Machine/update/(?P<pk>\d+)/$', views.MachineUpdate.as_view()),
    url(r'^Machine/delete/(?P<pk>\d+)/$', views.MachineDelete.as_view()),
    j'ai l'erreur suivante :

    Reverse for 'dns_app.views.MachineUpdate' with arguments '()' and keyword arguments '{u'pk': 1}' not found. 0 pattern(s) tried: []

  11. #11
    Membre confirmé
    Avatar de vincent.mbg
    Homme Profil pro
    Développeur Python
    Inscrit en
    Décembre 2007
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Python

    Informations forums :
    Inscription : Décembre 2007
    Messages : 327
    Points : 618
    Points
    618
    Par défaut
    Le problème viens du lien vers ta vue dans ton template.
    Ajoute un attribut name dans l'url.

    Dans ton url.py:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    url(r'^Machine/update/(?P<pk>\d+)/$', views.MachineUpdate.as_view(), name="dns-app-machine-update"),
    Dans ton template:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ...
    <a href="{% url 'dns-app-machine-update' pk=machine.pk %}">modifier</a>
    ...
    Cela devrait marcher
    Mon guide pour apprendre Tkinter - N'oubliez pas de consulter les FAQ Python ou de visiter mon blog

  12. #12
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2014
    Messages : 17
    Points : 7
    Points
    7
    Par défaut
    Super, une nouvelle fois merci.

    J'ai une erreur sur l'url qui retourne le succés mais je vais gratter pour mieux comprendre !

  13. #13
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2014
    Messages : 17
    Points : 7
    Points
    7
    Par défaut
    Bonjour,

    Besoin d'aide sur l'organisation d'un formulaire... je voudrais pouvoir indiquer la syntaxe de début et/ou de fin du champ du formulaire à remplir et avoir un espace pour compléter ce champ.

    Cela est-il possible ?

    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupérer les données d'un formulaire dans le controller
    Par ProToXiDe dans le forum CodeIgniter
    Réponses: 2
    Dernier message: 27/02/2015, 11h34
  2. Récupérer les données d'un formulaire dans une servlet
    Par Rinel dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 27/12/2014, 11h49
  3. [1.x] Récupérer les données d'un formulaire dans un XML
    Par misswatson dans le forum Symfony
    Réponses: 10
    Dernier message: 11/05/2012, 13h36
  4. [Turbo Pascal] Récupérer les données d'un fichier dans un tableau
    Par alfy06 dans le forum Turbo Pascal
    Réponses: 2
    Dernier message: 07/06/2010, 22h00
  5. [ezPDF] Récupérer les données d'un formulaire dans mon pdf
    Par Lenalyon dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 28/04/2008, 15h38

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