Partage
  • Partager sur Facebook
  • Partager sur Twitter

Exercices du cours Django / Vos questions

    22 mars 2015 à 15:50:31

    -
    Edité par adrimol 22 mars 2015 à 20:02:13

    • Partager sur Facebook
    • Partager sur Twitter
      28 mars 2015 à 19:44:26

      Bonjour!

      C'est avec grand intérêt que je veux me lancer dans django mais je suis depuis une semaine bloqué à l'installation!

      Etant sur mac j'ai suivi à la lettre vos indications, réussi à installer django via pip mais impossible de faire reconnaitre django par python. Il me renvoie "ImportError: No module named 'django'" à toutes tentatives. J'ai tout essayé, recommencé, regardé des centaines de tutoriels, impossible de me sortir de cette mauvaise passe!

      Merci de m'aider à sortir de cette frustration!

      • Partager sur Facebook
      • Partager sur Twitter
        2 avril 2015 à 1:09:02

        salut famille

        je suis bellamy et je vous une aide pour l'installation de django et un lien de telechagement car je ne me retrouve pas sur le site django

        • Partager sur Facebook
        • Partager sur Twitter
          14 mai 2015 à 2:06:06

          -
          Edité par VincentTheProgrammer 14 mai 2015 à 6:03:19

          • Partager sur Facebook
          • Partager sur Twitter
          VincentTheProgrammer
            25 mai 2015 à 20:23:10

            Bonjour,

            je reprends ce post, car j'ai le même problème :


            [Django] page not found date.html

            Le 12 novembre 2014 à 21:53:15

            Toujours en suivant le nouveau cours, j'ai crue bien comprendre les instructions, cependant, il y à des points ambigues tel que lorsqu'il est mentionné de: 

            "Nous commençons par un exemple avec une vue qui renvoie juste la date actuelle à l'utilisateur, et son fichier urls.py associé :"


            J'ai mit le code demandé dans ~/Documents/Projets/crepes_bretonnes/blog/views.py :


            1
            2
            3
            4
            5
            6
            7
            8
            9
            10
            11
            12
            13
            14
            15
            16
            17
            18
            from django.http import HttpResponse
            from django.shortcuts import render
            from datetime import datetime
            def home(request):
            """ Exemple de page HTML, non valide pour que l'exempe soit concis """
            text = """<h1> Bienvenue sur mon blog !</h1>
            <p>Les crêpes bretones ça tue des mouettes en plein vol !</p>"""
            return HttpResponse(text)
            def date_actuelle(request):
            return render(request, 'blog/date.html', {'date': datetime.now()})
            def addition(request, nombre1, nombre2):
            total = int(nombre1) + int(nombre2)
            # Retourne nombre1, nombre2 et la somme des deux au tpl
            return render(request, 'blog/addition.html', locals())

            ensuite, dans urls.py

            1
            2
            3
            4
            5
            6
            7
            from django.conf.urls import patterns, url
            urlpatterns = patterns('blog.views',
            url(r'^accueil$', 'home'),
            url(r'^date$', 'date_actuelle'),
            url(r'^addition/(?P<nombre1>\d+)/(?P<nombre2>\d+)/$', 'addition'),
            )

            et finalement, dans ~/Documents/Projets/crepes_bretonnes/blog/templates/blog/date.html


            1
            2
            <h1>Bienvenue sur mon blog</h1>
            <p> La date actuelle est : {{ date }}</p>

            J'ai bien ajouter dans le settings.py : 


            1
            2
            3
            TEMPLATE_DIRS = (
            os.path.join(BASE_DIR, 'templates'),
            )

            et je me suis assuré que blog était dans INSTALLED_APPS


            Mais voilà, quand j'essai d'acceder à la page http://localhost:8000/blog/date.html

            je recoit une erreur 404.


            Où fais-je faut bon ? 






            Le 13 novembre 2014 à 7:57:13

            Salut ,

            ton erreur est là : http://localhost:8000/blog/date.html

            ici tu pointes un fichier statique ( html ), il faut garder en tête que l'url n'est qu'une "route" qui sera analysé par Django ( et matché avec ton/tes fichiers urls.py ) pour exécuter la bonne vue .

            Donc l'url sera :


            http://localhost:8000/blog/date


            Ch.

             
            Le 23 mai 2015 à 19:19:40

            Bonjour stopher,

            Désolé de faire du déterrage de topic, j'ai exactement le même problème que Mobidoy et j'ai suivi le tuto à la lettre, je ne vois pas l'erreur que j'ai commise, car le fait de taper "l'url", donc la route ne change rien:

            Exemple "accueil marche bien" ==>

            Par contre l'exemple "date", ben.... 

             

            help.... SOS.....SOS

            -
            Edité par kamis13 le 23 mai 2015 à 19:25:31

            [Django] page not found date.html

            <form action="/message/creer/django-page-not-found-date-html" method="post">
             
               
             
                 
               
                       
             
             
            </form>
            • Partager sur Facebook
            • Partager sur Twitter
              26 mai 2015 à 3:28:36

              Juste pour vérifier:

              Avez-vous une ligne avec url(r'^blog/',...) dans le urls.py du projet principal ("crepes_bretonnes", je suppose) dans laquelle l'application blog est placée?

              • Partager sur Facebook
              • Partager sur Twitter
              VincentTheProgrammer
                21 juin 2015 à 0:06:27

                Salut tout le monde,

                Alors voilà moi, je cale vraiment sur un problème très simple : j'aimerais afficher des images sur mon site.

                Alors pourquoi c'est un mystère? Parce que le chargement d'image se réalise sans le moindre problème lorsque je la charge dans une appli. Mais ce que j'aimerais, c'est placer les images dans la page d'accueil et donc dans le dossier /mon_projet/static/images/mon_image.png

                Le plus bizarre c'est que pour charger des images dans le fichier mon_projet/static/css/base.css, il n'y a aucun problème.
                J'ai essayé d'indiqué l'url relatif et puis l'url absolu pour le chemin de l'image mais rien n'y fait :calim2:

                Ce qui me frustre beaucoup c'est que la grosse majorité des tutoriels expliquent le cas de figure pour les applis mais pas pour les pages de "base".


                Voici mes codes.

                Pour le fichier setting.py
                STATIC_URL = '/static/'
                
                 STATICFILES_DIRS = (
                     os.path.join(BASE_DIR, "static"),
                )


                Pour le fichier base.html :

                <!doctype html>
                
                {% load staticfiles %}
                
                 <img src="images/ad180.png" alt="image"

                voici une ligne de code pour le fichier css, qui lui fonctionne très bien ;

                background: #fff url('/../images/headerimg.jpg') no-repeat left top;


                Alors évidemment j'ai essayé de jouer avec le chemin du lien donc à priori ce n'est pas le problème bien que si je tape l'adresse [url]http://127.0.0.1:8000/static/images/mon_image.png[/url], il l'affiche bel et bien.
                J'ai également joué avec la balise {% static 'chemin_de_mon_image' %} mais ça n'a pas donné plus de résultat.


                Vous pourriez me demander la structure du projet, il est tout ce qu'il y a de plus django-compliant :

                -mon_projet
                ----static
                --------css
                ------------base.css
                --------images
                ------------mon_image
                ----template
                --------base.html


                Voilà, je serais très reconnaissant aux personnes qui essaieront de me donner des pistes :)
                • Partager sur Facebook
                • Partager sur Twitter
                  8 juillet 2015 à 15:18:50

                  Bonjour à tous, 

                  J'en suis à la partie "gestion des fichiers" du cours, et je n'arrive pas à reproduire l'exemple du cours. Je ne crois pas que la question ait été abordée plus haut, pardon si c'est le cas !

                  J'ai 2 soucis :

                  - Dans la vue "nouveau-contact", quand j'utilise "sauvegarde = True", rien n'est enregistré en base de donnée. En revanche, c'est le cas si j'utilise form.save()

                  - Je ne peux pas enregistrer de fichiers sur mon disque, j'ai l'erreur 

                  [Errno 13] Permission denied: '/media'

                  Merci d'avance pour votre aide !

                  • Partager sur Facebook
                  • Partager sur Twitter
                    9 juillet 2015 à 11:51:06

                    Pour le problème de sauvegarde, il se peut que le formulaire ne soit pas valide pour une raison X ou Y. Vous pouvez voir les erreurs en utilisant {{ forms.errors }} dans le template.

                    Pour le problème d'écriture, j'ai l'impression que votre variable MEDIA_ROOT est mal configurée :

                    # Ce que vous avez surement, qui essaye d'écrire à la racine de votre système de fichiers
                    MEDIA_ROOT = '/media'
                    
                    # Ce qui serait mieux
                    MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')

                    BASE_DIR est censé être défini tout en haut du fichier settings.py, comme on l'a vu dans la première partie.

                    • Partager sur Facebook
                    • Partager sur Twitter
                      9 juillet 2015 à 21:19:03

                      Merci !

                      Le problème d'écriture a bien été réglé. J'avais saisi la même ligne que dans le cours :

                      MEDIA_ROOT = os.path.join(BASE_DIR, '/media/').

                      Et ça a fonctionné en enlevant le 1er slash : 

                      MEDIA_ROOT = os.path.join(BASE_DIR, 'media/').

                      En revanche, pour le template, j'ai fait la manip', et il n'y a aucune erreur.



                      -
                      Edité par NicolasReboud-Ikonomov 9 juillet 2015 à 21:35:09

                      • Partager sur Facebook
                      • Partager sur Twitter
                        16 juillet 2015 à 14:03:14

                        Bonjour à tous ! :)

                        Je suis sur l'activité "Construisez une application de blog complète". Voici le problème :

                        Ma BDD ne prends pas en compte la foreign key key d'un modèle (j'ai bien fait la migration, relancé le serveur, etc...)

                        Voici un aperçu des modèles :

                        from django.db import models
                        
                        class Article(models.Model):
                            titre = models.CharField(max_length=100)
                            slug = models.SlugField()
                            auteur = models.CharField(max_length=42)
                            contenu = models.TextField(null=True)
                            date = models.DateTimeField(verbose_name="Date de parution",
                                                        auto_now_add=True, auto_now=False)
                            is_visible = models.BooleanField(verbose_name="Article publié ?",
                                                             default=False)
                            categorie = models.ForeignKey('Categorie')
                        
                            def __str__(self):
                                return self.titre
                        
                        
                        class Categorie(models.Model):
                            titre = models.CharField(max_length=100)
                        
                            def __str__(self):
                                return self.titre
                        
                        
                        class Comment(models.Model):
                            pseudo = models.CharField(max_length=42)
                            date = models.DateTimeField(verbose_name="Date de parution",
                                                        auto_now_add=True, auto_now=False)
                            related_art = models.ForeignKey('Article')
                            commentaire = models.TextField(null=True)
                            is_visible = models.BooleanField(verbose_name="Commentaire visible ?",
                                                             default=False)
                            def __str__(self):
                                return self.pseudo

                        NOTE : c'est donc dans le modèles Comment que j'ai un problème au niveau de l'attribut : "related_art"

                        Voici le log d'erreur :

                        Et c'est bien normal vu qu'en visualisant le fichier sqlight, le champs "related_art" n'a pas été créé :

                        Je rappelle que j'ai bien fait toutes les migrations, et relancé le serveur, mais rien.

                        Le plus étrange c'est que pour la ForeignKey "Categorie" de Article, le problème ne se pose pas...

                        Si vous avez une idée du pourquoi du comment, merciiiiii ! :D

                        • Partager sur Facebook
                        • Partager sur Twitter
                          19 juillet 2015 à 22:49:28

                          Sans les migrations sous les yeux ça va être compliqué ^^

                          Vérifiez qu'une ligne de ce type existe dans un des fichiers de migrations de votre application :

                          migrations.AddField(
                                      model_name='comment',
                                      name='related_art',
                                      field=models.ForeignKey(default=1, verbose_name="Article", to='blog.Article'),
                                      preserve_default=True,
                                  ),

                          (Je l'ai écris à la main, ce n'est peut-être pas exactement ça. L'important c'est que ce soit un AddField avec un models.ForeignKey)

                          Si ce n'est pas le temps, tentez de re-exécuter la commande makemigrations...

                          • Partager sur Facebook
                          • Partager sur Twitter
                            24 juillet 2015 à 16:50:07

                            Merci pour le retour. En relançant un "makemigrations" il m'affiche "No changes detected" dans la console.

                            Voici le fichier de migration pour l'app BLOG :

                            # -*- coding: utf-8 -*-
                            from __future__ import unicode_literals
                            from django.db import models, migrations
                            
                            
                            class Migration(migrations.Migration):
                            
                                dependencies = [
                                ]
                            
                                operations = [
                                    migrations.CreateModel(
                                        name='Article',
                                        fields=[
                                            ('id', models.AutoField(serialize=False, primary_key=True, auto_created=True, verbose_name='ID')),
                                            ('titre', models.CharField(max_length=100)),
                                            ('slug', models.SlugField()),
                                            ('auteur', models.CharField(max_length=42)),
                                            ('contenu', models.TextField(null=True)),
                                            ('date', models.DateTimeField(auto_now_add=True, verbose_name='Date de parution')),
                                            ('is_visible', models.BooleanField(verbose_name='Article publié ?', default=False)),
                                        ],
                                    ),
                                    migrations.CreateModel(
                                        name='Categorie',
                                        fields=[
                                            ('id', models.AutoField(serialize=False, primary_key=True, auto_created=True, verbose_name='ID')),
                                            ('titre', models.CharField(max_length=100)),
                                        ],
                                    ),
                                    migrations.CreateModel(
                                        name='Comment',
                                        fields=[
                                            ('id', models.AutoField(serialize=False, primary_key=True, auto_created=True, verbose_name='ID')),
                                            ('pseudo', models.CharField(max_length=42)),
                                            ('date', models.DateTimeField(auto_now_add=True, verbose_name='Date de parution')),
                                            ('commentaire', models.TextField(null=True)),
                                            ('is_visible', models.BooleanField(verbose_name='Commentaire visible ?', default=False)),
                                            ('related_art', models.ForeignKey(to='blog.Article')),
                                        ],
                                    ),
                                    migrations.AddField(
                                        model_name='article',
                                        name='categorie',
                                        field=models.ForeignKey(to='blog.Categorie'),
                                    ),
                                ]
                            

                            On voit que le AddField n'est pas présent pour Comment... Donc si j'ai bien compris, je devrais pas avoir quelque chose de ce genre en plus :

                            migrations.AddField(
                                model_name='comment',
                                name='related_art',
                                field=models.ForeignKey(to='blog.Article'),
                            )

                            Mais pourquoi ça n'est pas généré d'office par la cmd "makemigrations" ?

                            Que faudrait-il que je fasse ou que je configure ? (Note : Je n'ai pourtant pas eu ce soucis avec la ForeignKey "categorie" pour Article. En quoi c'est différent ici ? )


                            -
                            Edité par LauGau 24 juillet 2015 à 16:54:24

                            • Partager sur Facebook
                            • Partager sur Twitter
                              25 juillet 2015 à 11:07:54

                              Non mais il y a bien un ('related_art', models.ForeignKey(to='blog.Article')), dans le CreateModel correspondant, donc ça devrait être correct.

                              J'avoue ne pas trop comprendre pour le coup pourquoi le champ n'apparait pas... Il se peut qu'il y ait eu un soucis soit avec votre SGBD ou avec Django, mais je préfère n'avancer rien du tout. En développement, où il y a aucune données importantes dans la base, on peut se permettre d'essayer d'annuler la migration puis de la repasser :

                              python manage.py migrate blog zero  # annule toutes les migrations, puisque je suppose que celle-ci est la première
                              python manage.py migrate blog


                              Ceci devrait supprimer les tables et les recréer correctement.

                              -
                              Edité par Mlrnt 25 juillet 2015 à 11:08:40

                              • Partager sur Facebook
                              • Partager sur Twitter
                                26 juillet 2015 à 15:15:47

                                Merci pour la piste Ssx`z. Voici ce que ça me génère comme erreur dans la console :

                                PS C:\learning\python\django\crepes> py manage.py migrate blog zero
                                Operations to perform:
                                  Unapply all migrations: blog
                                Running migrations:
                                  No migrations to apply.
                                PS C:\learning\python\django\crepes> py manage.py migrate blog
                                Operations to perform:
                                  Apply all migrations: blog
                                Running migrations:
                                  Rendering model states... DONE
                                  Applying blog.0001_initial...Traceback (most recent call last):
                                  File "C:\Python34\lib\site-packages\django\db\backends\utils.py", line 62, in execute
                                    return self.cursor.execute(sql)
                                  File "C:\Python34\lib\site-packages\django\db\backends\sqlite3\base.py", line 316, in execute
                                    return Database.Cursor.execute(self, query)
                                sqlite3.OperationalError: table "blog_article" already exists
                                
                                The above exception was the direct cause of the following exception:
                                
                                Traceback (most recent call last):
                                  File "manage.py", line 10, in <module>
                                    execute_from_command_line(sys.argv)
                                  File "C:\Python34\lib\site-packages\django\core\management\__init__.py", line 338, in execute_from_command_line
                                    utility.execute()
                                  File "C:\Python34\lib\site-packages\django\core\management\__init__.py", line 330, in execute
                                    self.fetch_command(subcommand).run_from_argv(self.argv)
                                  File "C:\Python34\lib\site-packages\django\core\management\base.py", line 390, in run_from_argv
                                    self.execute(*args, **cmd_options)
                                  File "C:\Python34\lib\site-packages\django\core\management\base.py", line 441, in execute
                                    output = self.handle(*args, **options)
                                  File "C:\Python34\lib\site-packages\django\core\management\commands\migrate.py", line 221, in handle
                                    executor.migrate(targets, plan, fake=fake, fake_initial=fake_initial)
                                  File "C:\Python34\lib\site-packages\django\db\migrations\executor.py", line 110, in migrate
                                    self.apply_migration(states[migration], migration, fake=fake, fake_initial=fake_initial)
                                  File "C:\Python34\lib\site-packages\django\db\migrations\executor.py", line 147, in apply_migration
                                    state = migration.apply(state, schema_editor)
                                  File "C:\Python34\lib\site-packages\django\db\migrations\migration.py", line 115, in apply
                                    operation.database_forwards(self.app_label, schema_editor, old_state, project_state)
                                  File "C:\Python34\lib\site-packages\django\db\migrations\operations\models.py", line 59, in database_forwards
                                    schema_editor.create_model(model)
                                  File "C:\Python34\lib\site-packages\django\db\backends\base\schema.py", line 286, in create_model
                                    self.execute(sql, params or None)
                                  File "C:\Python34\lib\site-packages\django\db\backends\base\schema.py", line 111, in execute
                                    cursor.execute(sql, params)
                                  File "C:\Python34\lib\site-packages\django\db\backends\utils.py", line 79, in execute
                                    return super(CursorDebugWrapper, self).execute(sql, params)
                                  File "C:\Python34\lib\site-packages\django\db\backends\utils.py", line 64, in execute
                                    return self.cursor.execute(sql, params)
                                  File "C:\Python34\lib\site-packages\django\db\utils.py", line 97, in __exit__
                                    six.reraise(dj_exc_type, dj_exc_value, traceback)
                                  File "C:\Python34\lib\site-packages\django\utils\six.py", line 658, in reraise
                                    raise value.with_traceback(tb)
                                  File "C:\Python34\lib\site-packages\django\db\backends\utils.py", line 62, in execute
                                    return self.cursor.execute(sql)
                                  File "C:\Python34\lib\site-packages\django\db\backends\sqlite3\base.py", line 316, in execute
                                    return Database.Cursor.execute(self, query)

                                Pour ce qui est d'un problème au niveau SGBD et Django, j'utilise l'installation de base (v 1.8.3). Donc à priori pas de soucis.

                                Je sais toujours pas d'où ça vient... Personne d'autre n'a ce problème ? :'(

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  27 juillet 2015 à 16:30:32

                                  Bon je ne sais pas exactement comment j'ai fait mais le problème est résolu.

                                  J'ai d'abord nettoyé mes migrations : 

                                  # python manage.py migrate blog zero

                                  Ensuite j'ai recréé mes migrations :

                                  # python manage.py makemigrations blog

                                  J'ai essayé une énième fois de les appliquer :

                                  # python manage.py migrate blog

                                  Mais ça m'a retourné une erreur "Table ___ already exists". J'ai essayé ça :

                                  # python manage.py migrate --fake blog

                                  Ensuite j'ai relancé le serveur (pas sûr que ça soit utile, mais dans le doute ^^). Et j'ai refait ma migration qui s'est faite sans problème cette fois :

                                  # python manage.py migrate blog

                                  Il semble que ça soit une nouveauté de Django 1.8 : avant il appliquait automatiquement une "fausse" migration si les tables existaient déjà dans la migration initiale (d'après ce que j'en ai compris...)... maintenant il semble que ça coince si lors de la migration des tables existent déjà...

                                  Pour ceux que ça intéresse, la source officielle est ici : https://docs.djangoproject.com/fr/1.8/topics/migrations/#adding-migrations-to-apps

                                  Encore merci Ssx`z pour le coup de main. ;-)

                                  -
                                  Edité par LauGau 27 juillet 2015 à 16:31:46

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    6 août 2015 à 11:37:24

                                    Bonjour !

                                    Après avoir lu la partie sur les signaux/middlewares, je me suis à nouveau attelé à l'exercice sur le blog avec commentaires. J'ai voulu mettre à jour le nombre de commentaires d'un article automatiquement à chaque suppression d'un commentaire. Pour cela, j'ai mis dans models.py les deux lignes suivantes :

                                    from django.db.models.signals import pre_delete
                                    
                                    def suppression_commentaire(sender, instance, **kwargs):
                                        """Lorsqu'on supprime un commentaire, on décrémente
                                        le nombre de commentaires."""
                                        instance.article.nb_commentaires -= 1
                                    
                                    pre_delete.connect(suppression_commentaire, sender=Commentaire)

                                    Mais cela ne fonctionne pas : aucune mise à jour n'est réalisée quand je supprime un commentaire de l'interface Admin. De plus, d'un point de vue d'organisation du code, est-ce que ce ne serait pas plus propre d'avoir un fichier signals.py dans lequel on pourrait mettre tout les signaux ? Mais alors, comment dit-on proprement à django d'aller chercher les signaux là bas ?

                                    Merci !

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      9 août 2015 à 20:49:24

                                      GeoffNN: Il faut sauvegarder l'article une fois modifié :

                                      from django.db.models.signals import pre_delete
                                       
                                      def suppression_commentaire(sender, instance, **kwargs):
                                          """Lorsqu'on supprime un commentaire, on décrémente
                                          le nombre de commentaires."""
                                          instance.article.nb_commentaires -= 1
                                          instance.article.save()
                                       
                                      pre_delete.connect(suppression_commentaire, sender=Commentaire)



                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        16 août 2015 à 15:53:41

                                        Je suis sous linux, j'ai installé Django (version 2.8.3) mais par défaut il utilise python 2.37, comment passer à 3.4 ou 3.5?

                                        Je ne sais pas si s'en est la cause mais du coup quand je veux ajouter

                                        url(r'^accueil$', 'blog.views.home'),

                                        à url.py, ća n marche pas... des erreur de partout, il ne comprend pas blog.vieux.home

                                        -
                                        Edité par oni_shadow 16 août 2015 à 16:12:45

                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          17 août 2015 à 11:32:52

                                          Bonjour,

                                          Pour Python 3, tentez d'utiliser la commande python3 au lieu de python. Si cela marche, il vous faut alors changer le lien symbolique de l'exécutable Python (voir ici, http://stackoverflow.com/a/3339564/1433392)

                                          Pour le urls.py, je ne peux pas plus vous aider sans le message d'erreur...

                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            18 août 2015 à 6:29:25

                                            Bonjour,

                                            merci de votre réponse.

                                            Si je change le lien symbolique, les application exécutant python 2.7 ne seront pas affectée?
                                            (celle qui se base sur l’interpréteur ou les script pointant sur /bin/python)

                                            Mon erreur est :

                                            NameError at /

                                            name 'patterns' is not defined
                                            Request Method: GET
                                            Request URL: http://localhost:8000/
                                            Django Version: 1.8.3
                                            Exception Type: NameError
                                            Exception Value:
                                            name 'patterns' is not defined
                                            Exception Location: /media/Data/home/Documents/Academique/Science_dures/Info/Web/blog2_sansFramework/Blog/Blog/urls.py in <module>, line 23
                                            Python Executable: /usr/bin/python
                                            Python Version: 2.7.10
                                            Python Path:
                                            ['/media/Data/home/Documents/Academique/Science_dures/Info/Web/blog2_sansFramework/Blog',
                                             '/usr/lib/python2.7',
                                             '/usr/lib/python2.7/plat-x86_64-linux-gnu',
                                             '/usr/lib/python2.7/lib-tk',
                                             '/usr/lib/python2.7/lib-old',
                                             '/usr/lib/python2.7/lib-dynload',
                                             '/usr/local/lib/python2.7/dist-packages',
                                             '/usr/lib/python2.7/dist-packages',
                                             '/usr/lib/python2.7/dist-packages/PILcompat',
                                             '/usr/lib/python2.7/dist-packages/gtk-2.0',
                                             '/usr/lib/python2.7/dist-packages/ubuntu-sso-client']
                                            Server time:

                                            Tue, 18 Aug 2015 04:27:39 +0000

                                            Traceback Switch to copy-and-paste view

                                            • /usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py in get_response
                                              1.                             resolver_match = resolver.resolve(request.path_info)
                                                ...
                                            • /usr/local/lib/python2.7/dist-packages/django/core/urlresolvers.py in resolve
                                              1.                         for pattern in self.url_patterns:
                                                ...
                                            • /usr/local/lib/python2.7/dist-packages/django/core/urlresolvers.py in url_patterns
                                              1.                     patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
                                                ...
                                            • /usr/local/lib/python2.7/dist-packages/django/core/urlresolvers.py in urlconf_module
                                              1.                         self._urlconf_module = import_module(self.urlconf_name)
                                                ...
                                            • /usr/lib/python2.7/importlib/__init__.py in import_module
                                              1.                 __import__(name)
                                                ...
                                            • /media/Data/home/Documents/Academique/Science_dures/Info/Web/blog2_sansFramework/Blog/Blog/urls.py in <module>
                                              1.             urlpatterns = patterns('',
                                                ...
                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              18 août 2015 à 11:00:31

                                              Bonjour,

                                              Si vous modifiez le lien vers l'exécutable, à chaque fois que vous lancez "python ....py", vous utiliserez python3. C'est pour cela que l'on conseille généralement de faire des environnements virtuels pour garder une version de Python et les dépendances du projet isolé de vos autres projets, cf http://sametmax.com/les-environnement-virtuels-python-virtualenv-et-virtualenvwrapper/

                                              Pour votre erreur, il vous manque une ligne d'import dans votre fichier :

                                               from django.conf.urls import patterns, include, url
                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                1 septembre 2015 à 17:14:02

                                                Bonjour à tous, de mon coté j'ai un petit soucis pour l'envoi de l'activité 1 "créez une application de blog complète".

                                                - Tout fonctionne normalement. Je duplique tout mon dossier...

                                                - Après j'y supprime tous les fichiers ".pyc" partout, tous les dossiers "__pycache__" et la base de donnée "db.sqlite3"...

                                                - Je lance "python manage.py makemigrations blog" à la racine du dossier. Il m'indique "no changes detected in app 'blog' "

                                                - ensuite je lance "python manage.py migrate blog", mais au bout d'un moment ça me sort "RuntimeError: Error creating new content types. Please make sure contenttypes is migrated before trying to migrate apps individually."

                                                Le problème ne se pose pas si je fais "makemigration / migrate" sans cibler l'app "blog"... C'est grave ou c'est tout de même bon pour avoir tous les points ? ^^

                                                Ensuite, je voulais savoir, si on supprime toute la base de donnée, on a plus aucun article sur l'accueil du blog ni les login d'admin, du coup le correcteur va devoir se créer un super admin ?

                                                Je me pose ces questions parce-que je visualise mal la procédure de correction... Merci pour le coup de patte.

                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  1 septembre 2015 à 21:47:06

                                                  Bonsoir,

                                                  En effet, le migrate blog ne peut pas marcher si vous n'avez pas créé la base initialement (car il manque la table des utilisateurs et cette fameuse table contenttypes entre autres). Ce n'est pas absolument pas grave de faire un migrate plus global, ça permet même de s'assurer que tout est bien passé :) (cela prend juste un peu plus de temps quand vous avez des dizaines d'apps)

                                                  Pour la base, oui, le correcteur doit créer la base (via un migrate) puis un superadmin pour tester, ce qui devrait se faire en quelques secondes sans soucis particulier logiquement.

                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    2 septembre 2015 à 19:23:07

                                                    Merci pour la réponse Ssx`z !

                                                    Oui je me disais bien aussi... Mais comme sur l'activité il est spécifié :

                                                    Pour que vous receviez tous les points, il faut que votre correcteur arrive à accéder à votre blog en faisant les opérations suivantes :

                                                    1. Dézipper le projet Django que vous aurez fourni
                                                    2. À la racine du projet, effectuer les commandes suivantes en console :
                                                    python manage.py makemigrations blog
                                                    python manage.py migrate blog
                                                    python manage.py runserver

                                                    Du coup, moi de mon coté, je prépare mon petit dossier, supprime tout ce qu'il faut. Pour vérifier, je lance les commandes "exactes", du correcteur... et ça marche pas ! ^^ Bon pas que je sois psychorigide hein, je voulais juste être sûr d'avoir tous les points même si il faut faire :

                                                    python manage.py makemigrations
                                                    python manage.py migrate
                                                    python manage.py runserver

                                                    Du coup je peux envoyer mon dossier ? ^^

                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      2 septembre 2015 à 21:14:33

                                                      Ah oui, bien vu ! On va remplacer les commandes, merci :)
                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                        3 septembre 2015 à 10:11:14

                                                        Y'a pas de quoi, du coup j'ai déposé mon dossier.

                                                        Par contre oui, coté de la correction je pense qu'il faudrait aussi parler de la création d'un superuser (et modifier les commandes comme vu plus haut)

                                                        Aussi, j'ai remarqué que pour le premier barème, il peut y avoir 3 points... Mais le maximum attribuable est de deux... :-P

                                                        En tous cas, merci pour ce cours ! C'est bien expliqué et ça sera peut-être ma première certification ! (Et pour un quelqu'un sans aucun diplôme comme moi, c'est toujours ça de pris !! :D)

                                                        • Partager sur Facebook
                                                        • Partager sur Twitter
                                                          7 septembre 2015 à 17:42:54

                                                          bjr j sui novice en django ce pour je des problemes de debutant avec mon formulaire qui n stocke pas mes donnees dans la base j veux savoir l'erreur voici la view
                                                          def sinscrire(request):
                                                              # if this is a POST request we need to process the form data
                                                              if request.method == 'POST':
                                                                  # create a form instance and populate it with data from the request:
                                                                  form = InscriptionForm(request.POST)
                                                                  # check whether it's valid:
                                                                  if form.is_valid():
                                                                    email=form.cleaned_data["email"]
                                                                    
                                                                    username=form.cleaned_data["username"]
                                                                        
                                                                    password=form.cleaned_data["password1"]
                                                                    
                                                                    password=form.cleaned_data["password2"]
                                                                      
                                                                      # process the data in form.cleaned_data as required
                                                                      # ...
                                                                      # redirect to a new URL:
                                                                  return HttpResponseRedirect('/thanks/')
                                                          
                                                              # if a GET (or any other method) we'll create a blank form
                                                              else:
                                                                  form = InscriptionForm()
                                                              print locals()
                                                              return render(request, 'frontend/inscription.html', {'form': form})
                                                          et le form est la
                                                          class InscriptionForm(forms.Form):
                                                              class Meta:
                                                                  model = Profil
                                                              email = forms.EmailField(widget=forms.TextInput(attrs=dict(attrs_dict,
                                                                                                                         maxlength=75)),
                                                                                          label=_("Email"))
                                                              username = forms.RegexField(regex=USERNAME_RE,
                                                                                          max_length=30,
                                                                                          widget=forms.TextInput(attrs=attrs_dict),
                                                                                          label=_("Nom"),
                                                                                          error_messages={'invalid': _('le nom d utilisateur ne doit pas contenir des signes ou des caracteres .')})
                                                              password1 = forms.CharField(widget=forms.PasswordInput(attrs=attrs_dict,
                                                                                                                     render_value=False),
                                                                                          label=_("Mot de passe"))
                                                              password2 = forms.CharField(widget=forms.PasswordInput(attrs=attrs_dict,
                                                                                                                     render_value=False),
                                                                                          label=_("Retapez Mot de passe"))



                                                          • Partager sur Facebook
                                                          • Partager sur Twitter
                                                          cisse
                                                            8 septembre 2015 à 11:53:30

                                                            A première vu, il manque un "form.save()" dans ta condition "if form.is_valid()"...

                                                            -
                                                            Edité par LauGau 8 septembre 2015 à 11:54:06

                                                            • Partager sur Facebook
                                                            • Partager sur Twitter
                                                              11 septembre 2015 à 16:54:28

                                                              Bonjour,

                                                              J'ai une petite question, j'en suis aux vues génériques, section "Afficher un article via DetailView", Je souhaiterais, via ma page d'accueil, où je liste tous mes articles, afficher un article en détail.

                                                              Mais je vois pas comment, à partir de mon template, formater l'URL correctement pour appeler l'article complet:

                                                              urls.py

                                                              url(r'^article/(?P<pk>\d+)$', LireArticle.as_view(), name='blog_lire'),


                                                              views.py

                                                              class LireArticle(DetailView):
                                                                  context_object_name = "article"
                                                                  model = Article
                                                                  template_name = "blog/lire.html"
                                                              
                                                                  # get_queryset pourrait être utilisé pour personnalisé la selection (pour afficher un article que si il était
                                                                  # publique par exemple
                                                              
                                                                  def get_object(self):
                                                                      # Nous récupérons l'objet via la super-classe
                                                                      article = super(LireArticle, self).get_object()
                                                              
                                                                      article.nbVues += 1
                                                                      article.save()
                                                              
                                                                      return article
                                                              


                                                              et l'url dans mon template accueil.html:

                                                              <p><a href="{% url "blog.views.LireArticle" article.id %}" class="btn btn-primary">Lire la suite</a></p>


                                                              Si je passe directement par l'url configurée (/article/2), l'article s'affiche bien, par contre pour passer de ma page d'accueil à l'article détaillé j'ai le message suivant:

                                                              Reverse for 'blog.views.LireArticle' with arguments '(1,)' and keyword arguments '{}' not found. 0 pattern(s) tried: []

                                                              Merci d'avance pour le coup de main !

                                                              Mathieu




                                                              -
                                                              Edité par Math43 11 septembre 2015 à 16:55:19

                                                              • Partager sur Facebook
                                                              • Partager sur Twitter

                                                              Exercices du cours Django / Vos questions

                                                              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                              • Editeur
                                                              • Markdown