Partage
  • Partager sur Facebook
  • Partager sur Twitter

Exercices du cours Django / Vos questions

    11 septembre 2015 à 22:58:11

    Vous devez utiliser le nom de l'URL que vous fournissez en paramètre dans le urls.py : {% url "blog_lire" article.id %} ;)
    • Partager sur Facebook
    • Partager sur Twitter
      15 septembre 2015 à 10:06:52

      Ssx`z a écrit:

      Vous devez utiliser le nom de l'URL que vous fournissez en paramètre dans le urls.py : {% url "blog_lire" article.id %} ;)

      Super ça marche beaucoup mieux comme ça. Merci beaucoup :)

      • Partager sur Facebook
      • Partager sur Twitter
        18 septembre 2015 à 4:57:55

        salut. voici mon problème aider moi a resoudre
        • Partager sur Facebook
        • Partager sur Twitter
          18 septembre 2015 à 18:43:17

          Avec si peu d'informations, je ne peux que faire des suppositions... Ne serait-ce pas `blog.views.article` que vous vouliez mettre dans urls.py ?

          Je ne peux pas vous aider plus sans le code correspondant et sans plus de détails sur l'erreur...

          • Partager sur Facebook
          • Partager sur Twitter
            9 octobre 2015 à 17:18:37

            Bonjour,

            Petit souci sur la partie Utilisateurs, je suis en train de créer le routage pour la connexion des utilisateurs:

            url(r'^connexion$', 'views.auth.connexion' , name='connexion'),

            Voici mon views.py

            def connexion(request):
                error = False
            
                if request.method == "POST":
                    form = ConnexionForm(request.POST)
                    if form.is_valid():
                        username = form.cleaned_data['username']
                        password = form.cleaned_data['password']
            
                        user = authenticate(username=username, password=password) # Nous vérifions si les données sont correctés
            
                        if user: # Si l'object renvoyé n'est pas None
                            login(request, user) # Nous connections l'utilisateur
                        else:
                            error = True
                else:
                    form = ConnexionForm()
            
                return render(request, 'connexion.html', locals())

            Et l'erreur que j'ai via le début de Django:

            Exception Value:	
            No module named 'blog.views.views'; 'blog.views' is not a package

            Je suppose qu'il me manque une directive d'import concernant le module d'authentification dans mon urls.py mais je n'arrive pas à m'en sortir...

            Merci pour l'aide !





            • Partager sur Facebook
            • Partager sur Twitter
              11 octobre 2015 à 20:58:39

              Le problème vient de urls.py

              Tu y appelles la vue de connexion du module "auth":

              url(r'^connexion$', 'views.auth.connexion' , name='connexion'),

              Pour tout te dire, je ne le connais pas trop. Mais, j'ai l'impression que tu cherches à créer ta propre vue pour gérer la connexion.
              Tu devrais donc avoir quelque chose comme ça dans ton fichier urls.py :

              from nom_du_module import views
              
              url(r'^connexion$', 'views.connexion', name='connexion'),



               Pour l'import, ça dépends de ta structure. Tu pourrais aussi tout simplement avoir :

              url(r'^connexion$', 'nom_du_module.views.connexion' , name='connexion'),

              Je suis pas expert mais ça devrait donner quelque chose. ;)

              -
              Edité par LauGau 11 octobre 2015 à 21:01:46

              • Partager sur Facebook
              • Partager sur Twitter
                15 octobre 2015 à 16:38:03

                LauGau a écrit:

                Le problème vient de urls.py

                Tu y appelles la vue de connexion du module "auth":

                url(r'^connexion$', 'views.auth.connexion' , name='connexion'),

                Pour tout te dire, je ne le connais pas trop. Mais, j'ai l'impression que tu cherches à créer ta propre vue pour gérer la connexion.
                Tu devrais donc avoir quelque chose comme ça dans ton fichier urls.py :

                from nom_du_module import views
                
                url(r'^connexion$', 'views.connexion', name='connexion'),



                 Pour l'import, ça dépends de ta structure. Tu pourrais aussi tout simplement avoir :

                url(r'^connexion$', 'nom_du_module.views.connexion' , name='connexion'),

                Je suis pas expert mais ça devrait donner quelque chose. ;)

                -
                Edité par LauGau le 11 octobre 2015 à 21:01:46

                Merci, c'est beaucoup mieux maintenant !

                -
                Edité par Math43 15 octobre 2015 à 16:38:39

                • Partager sur Facebook
                • Partager sur Twitter
                  17 octobre 2015 à 13:21:21

                  Bonjour,

                  Je viens de mettre dans l'apprentissage du PYTHON, et je rencontre un petit souci, en effet, lorsque je suis le cours, concernant les conditions, dans la rubrique IF, à un moment données on doit tester :

                  >>>a = 5

                  >>> if a > 0:

                  ...         print ("a est positif.")

                  ... if a < 0:

                  ...         print ("a est negatif.")

                  Par compte, quand je fais la même chose dans la console, il me renvoi une erreur de synthax :

                  est-ce que vous pourriez me dire, où je me plante dans l'écriture, car là je comprend pas !!!

                  Merci d'avance

                  • Partager sur Facebook
                  • Partager sur Twitter
                    21 octobre 2015 à 16:34:33

                    Bonjour,

                    Mes contacts s'affichent mais pas les images (juste l'indicateur de la présence de l'image) lorsque je fais http://localhost:8000/blog/voircontact/ pourtant l'url de l'image est bonne, je ne vois pas l'erreur. lorsque j'inspecte le navigateur me dit "impossible de charger l'image" et le serveur de python me dit "GET /media/image.png HTTP/1.1" 404 2073.

                    mon fichier urls:

                    from django.conf.urls import include, url, patterns
                    from django.contrib import admin
                    
                    from django.conf import settings
                    from django.conf.urls.static import static
                    
                    urlpatterns = patterns('blog.views',
                        url(r'^$', 'accueil'), #accueil du blog
                        url(r'^date$', 'date_actuelle'),
                        url(r'^addition/(?P<nombre1>\d+)/(?P<nombre2>\d+)$', 'addition'),
                        url(r'^article/(?P<id>\d+)-(?P<slug>.+)$', 'lire'),
                        url(r'^contact/$', 'contact'),
                        url(r'^saisie/article$', 'saisie_article'),
                        url(r'^contactnew/$', 'nouveau_contact'),
                        url(r'^voircontact/$', 'voir_contact'),
                    
                    )
                    
                    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
                    

                    ma vue:

                    def voir_contact(request):
                    	contacts = Contact.objects.all()
                    	return render(request, 'blog/voir_contact.html', {'contacts': contacts})

                    mon template:

                    <h1>Liste des contacts</h1>
                    {% for contact in contacts %}
                        <h2>{{ contact.nom }}</h2>
                        Adresse : {{ contact.adresse|linebreaks }}<br/>
                        <img src="{{ contact.photo.url }}"/>
                    {% endfor %}

                    mon setting:

                    """
                    Django settings for crepes_bretonnes project.
                    
                    Generated by 'django-admin startproject' using Django 1.8.5.
                    
                    For more information on this file, see
                    https://docs.djangoproject.com/en/1.8/topics/settings/
                    
                    For the full list of settings and their values, see
                    https://docs.djangoproject.com/en/1.8/ref/settings/
                    """
                    
                    # Build paths inside the project like this: os.path.join(BASE_DIR, ...)
                    import os
                    
                    BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
                    
                    
                    # Quick-start development settings - unsuitable for production
                    # See https://docs.djangoproject.com/en/1.8/howto/deployment/checklist/
                    
                    # SECURITY WARNING: keep the secret key used in production secret!
                    SECRET_KEY = 'pahunuzkcrxyf^(#t5@k#**gi=vpf^j#rpuv#0=77paxyeg)cf'
                    
                    # SECURITY WARNING: don't run with debug turned on in production!
                    DEBUG = True
                    
                    ALLOWED_HOSTS = []
                    
                    
                    # Application definition
                    
                    INSTALLED_APPS = (
                        'django.contrib.admin',
                        'django.contrib.auth',
                        'django.contrib.contenttypes',
                        'django.contrib.sessions',
                        'django.contrib.messages',
                        'django.contrib.staticfiles',
                        'blog',
                    )
                    
                    MIDDLEWARE_CLASSES = (
                        'django.contrib.sessions.middleware.SessionMiddleware',
                        'django.middleware.common.CommonMiddleware',
                        'django.middleware.csrf.CsrfViewMiddleware',
                        'django.contrib.auth.middleware.AuthenticationMiddleware',
                        'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
                        'django.contrib.messages.middleware.MessageMiddleware',
                        'django.middleware.clickjacking.XFrameOptionsMiddleware',
                        'django.middleware.security.SecurityMiddleware',
                    )
                    
                    ROOT_URLCONF = 'crepes_bretonnes.urls'
                    
                    TEMPLATES = [
                        {
                            'BACKEND': 'django.template.backends.django.DjangoTemplates',
                            'DIRS': [os.path.join(BASE_DIR, 'templates')],
                            'APP_DIRS': True,
                            'OPTIONS': {
                                'context_processors': [
                                    'django.template.context_processors.debug',
                                    'django.template.context_processors.request',
                                    'django.contrib.auth.context_processors.auth',
                                    'django.contrib.messages.context_processors.messages',
                                ],
                            },
                        },
                    ]
                    
                    WSGI_APPLICATION = 'crepes_bretonnes.wsgi.application'
                    
                    
                    # Database
                    # https://docs.djangoproject.com/en/1.8/ref/settings/#databases
                    
                    DATABASES = {
                        'default': {
                            'ENGINE': 'django.db.backends.sqlite3',
                            'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
                        }
                    }
                    
                    
                    # Internationalization
                    # https://docs.djangoproject.com/en/1.8/topics/i18n/
                    
                    LANGUAGE_CODE = 'fr-FR' #'en-us'
                    
                    TIME_ZONE = 'UTC'
                    
                    USE_I18N = True
                    
                    USE_L10N = True
                    
                    USE_TZ = True
                    
                    
                    # Static files (CSS, JavaScript, Images)
                    # https://docs.djangoproject.com/en/1.8/howto/static-files/
                    
                    STATIC_URL = '/static/'
                    
                    STATICFILES_DIRS = (
                        os.path.join(BASE_DIR, "static"),
                    )
                    
                    
                    MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')
                    MEDIA_URL = '/media/'
                    


                    Si vous pouviez m'aider à trouver le problème, ce serait super.

                    Merci d'avance.



                    • Partager sur Facebook
                    • Partager sur Twitter
                      21 octobre 2015 à 23:43:44

                      Problème d'affichage d'image résolu: ces lignes sont à rajouter dans le fichier urls GLOBAL (j'avais zappé le GLOBAL)

                      from django.conf import settings
                      from django.conf.urls.static import static
                       
                      urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)



                      • Partager sur Facebook
                      • Partager sur Twitter
                        23 octobre 2015 à 18:27:39

                        Bonjour à tous j'ai suivi le cour traitant de django et j'essaye maintenant de faire fonctionner les detailView et les ListView malheuresement un probléme me poursuit il s'agit de cette erreur :

                        Reverse for 'url_News' with arguments '(1,)' and keyword arguments '{}' not found. 1 pattern(s) tried: ['Accueil/$(?P<pk>\\d+)$']

                        j'ai beau essayé de changer mon code dans mon templates , dans mes urls ou mes vies celle ci persiste. Donc voici mon code en éspérant que vous pourrez m'aider :

                        Tout d'abord mon template

                        <h1> Bienvenue ! </h1>
                          
                        
                        {% for news in dernieres_news %}
                        
                        <h3> {{news.titre}}</h3>
                        <p>{{news.contenu|truncatewords_html:80}}</p>
                        <a href "{%    url  'url_News' news.id %}" > Lire la suite </a>
                        {% endfor %}
                        
                        
                        {% if is_paginated %}
                        {% if page_obj.has_previous %}
                        	<a href="?page={{ page_obj.previous_page_number  }} "> Précédente</a> --
                        	{% endif%}
                        	page {{ page_obj.number }} sur {{page_obj.paginator.num_pages }}
                        	{% if page_obj.has_next %}
                        	-- <a href="?page={{page_obj.next_page_number }}">Suivante</a>
                        	{%endif%}
                        	
                        	{%endif%}
                        	

                        mon views.py :

                        class LireNews(DetailView):
                            context_object_name="news"
                            model = News
                            template_name="Accueil/News.html"
                            
                        
                                
                        
                        
                            
                            
                        
                            
                        class ListeNews(ListView):
                            model = News
                            context_object_name="dernieres_news"
                            template_name = "Accueil/AccueilNC.html"
                            paginate_by=1
                         

                        et enfin mon urls.py:

                        urlpatterns = patterns('',
                                               url(r'^$',ListeNews.as_view() , name ="url_ListeNews"),
                                               url(r'^(?P<pk>\d+)$',LireNews.as_view(),name='url_News'),
                        )
                        


                        Merci d'avance pour vos réponse <3




                        • Partager sur Facebook
                        • Partager sur Twitter
                          25 octobre 2015 à 18:27:58

                          parisienbreton a écrit:

                          Bonjour,

                          Je viens de mettre dans l'apprentissage du PYTHON, et je rencontre un petit souci, en effet, lorsque je suis le cours, concernant les conditions, dans la rubrique IF, à un moment données on doit tester :

                          >>>a = 5

                          >>> if a > 0:

                          ...         print ("a est positif.")

                          ... if a < 0:

                          ...         print ("a est negatif.")

                          Par compte, quand je fais la même chose dans la console, il me renvoi une erreur de synthax :

                          est-ce que vous pourriez me dire, où je me plante dans l'écriture, car là je comprend pas !!!

                          Merci d'avance




                          Salut,

                          Tu peux pas mettre deux "if" à la suite, tu devrais plutôt mettre elif ou else.
                          • Partager sur Facebook
                          • Partager sur Twitter
                            5 novembre 2015 à 16:40:40

                            Je retire ma question.petite erreur de frappe.

                            -
                            Edité par LAMEYNARDIE 5 novembre 2015 à 17:23:40

                            • Partager sur Facebook
                            • Partager sur Twitter
                              5 novembre 2015 à 23:32:25

                              Bonjour,

                              En guise d'exercice et sans utiliser les vues génériques de connexion et déconnexion de django.contrib.auth , j'ai récupéré le paramètre GET (next) pour faire après authentification une redirection vers l'url voulue à l'origine. Ça fonctionne mais je ne trouve pas ma méthode très "sexy" (notamment dans le template); puis-je avoir vos avis et suggestions , merci ?- précision: je suis à la 4ème partie du cours.

                              la fonction de connexion dans views.py:

                              def connexion(request):
                                  error = False
                                  n=request.GET.get('n')
                                  if request.method == "POST":
                                      form = ConnexionForm(request.POST)
                                      if form.is_valid():
                                          username = form.cleaned_data["username"]
                                          password = form.cleaned_data["password"]
                                          user = authenticate(username=username, password=password)
                                          if user:
                                              login(request, user)
                                              if request.GET.get('n'):
                                                  return redirect(request.GET['n'])
                                              else:
                                                  return redirect(accueil)
                              
                                          else:
                                              error = True
                                  else:
                                      form = ConnexionForm()
                              
                                  return render(request, 'blog/connect_user.html', locals())
                              

                              le décorateur dans view.py sur la fonction affichant un article (accessible uniquement au user authentifié):

                              @login_required(redirect_field_name='n')
                              def lire_article(request, slug):
                              .....

                              urls.py:

                              from django.conf.urls import url, patterns
                              from blog.views import accueil, lire_article, connexion, deconnexion
                              
                              urlpatterns = patterns('blog.views',
                                  url(r'^$', accueil, name='accueil'),
                                  url(r'^connexion$', connexion, name='connexion'),
                                  url(r'^deconnexion$', deconnexion, name='deconnexion'),
                                  url(r'^(?P<slug>.+)$', lire_article, name='blog_lire'),
                              )
                              

                              et enfin le template de connexion:

                              <h1>Se connecter</h1>
                              
                              {% if error %}
                              <p><strong>Utilisateur inconnu ou mauvais mot de passe.</strong></p>
                              {% endif %}
                              
                              {%if n %}
                              <form method="post" action="{% url 'connexion' %}?n={{ n }}">
                                  {% csrf_token %}
                                  {{ form.as_p }}
                                  <input type="submit" value="Se connecter" />
                              </form>
                              {% else %}
                              <form method="post" action="{% url 'connexion' %}">
                                  {% csrf_token %}
                                  {{ form.as_p }}
                                  <input type="submit" value="Se connecter" />
                              </form>
                              {% endif %}
                              



                              • Partager sur Facebook
                              • Partager sur Twitter
                                9 novembre 2015 à 1:47:36

                                salut

                                j'ai un souci :

                                Reverse for 'detail_client' with arguments '('',)' and keyword arguments '{}' not found. 1 pattern(s) tried: ['ventes/detail_client/(?P<pk>\\d+)$']

                                 voici le code source

                                class ClientDetail(DetailView):
                                    """Cette classe permet d'affiche le detail sur un client"""
                                    model = Clients
                                    template_name = "detail_client"
                                    context_object_name = "detail_client"

                                    def get_context_data(self, **kwargs):
                                        context=super(ClientDetail, self).get_context_data(**kwargs)
                                        context["list_client"] = Clients.all()
                                        return contex

                                class ClientListeRedirect(RedirectView):
                                    permanent = False
                                    query_string = True
                                    pattern_name = "client_detail"
                                   
                                    def get_redirect_url(self, *args, **kwargs):
                                        client = get_object_or_404(Clients, pk=kwargs['pk'])   
                                        client.update_counter()
                                        return super(ClientListeRedirect,self).get_redirect_url(*args,**kwargs)   

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  17 novembre 2015 à 11:19:25

                                  Bonjour a tous je suis sur  l 'exercice du blog et je rencontre un petit probleme

                                  le message d 'erreur est page not found , no article match the given query

                                  je poste ci-dessous le code

                                  urls.py

                                  from django.conf.urls import patterns,url
                                  
                                  
                                  urlpatterns = patterns('blog.views',
                                      url(r'^$','accueil', name='accueil'),
                                      url(r'^(?P<slug>.+)$','lire_article',name='blog_lire'),
                                  ) 

                                  views.py

                                  from django.shortcuts import render, get_object_or_404
                                  
                                  from blog.models import Article
                                  
                                  
                                  def accueil(request):
                                      """
                                      Affiche les 5 derniers articles du blog. Nous n'avons pas encore
                                      vu comment faire de la pagination, donc on ne donne pas la
                                      possibilité de lire les articles plus vieux via l'accueil pour
                                      le moment.
                                      """
                                      articles = Article.objects.filter(is_visible=True).order_by('-date')[:4]
                                  
                                      return render(request, 'blog/accueil.html', {'articles': articles})
                                  
                                  
                                  def lire_article(request, slug):
                                      """
                                      Affiche un article complet, sélectionné en fonction du slug
                                      fourni en paramètre
                                      """
                                      article = get_object_or_404(Article, slug=slug)
                                  
                                      return render(request, 'blog/lire_article.html', {'article': article})

                                  et accueil.html

                                  {% extends "blog/base.html" %}
                                  
                                  {% block title %}Accueil du blog{% endblock %}
                                  
                                  {% block content %}
                                  	<h1>Derniers articles</h1>
                                  
                                  	{% for article in articles %}
                                  		<h2 class="titre-article">{{ article.titre }}</h2>
                                  		
                                  
                                  		<p class="infos-article">Le {{ article.date|date:'SHORT_DATETIME_FORMAT' }}, XX commentaires.</p>
                                  
                                  		<div class="contenu-article">
                                  			{{ article.contenu|safe|truncatewords_html:30 }}
                                  		</div>
                                  
                                  		<p><a href="{% url 'blog_lire' article.slug %}">Lire la suite</a></p>
                                  
                                  		<hr />
                                  	{% endfor %}
                                  
                                  {% endblock %}

                                  Est ce quelqu un peut me dire qu est ce qui ne vas pas??

                                  Merci pour vos reponses...






                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    17 novembre 2015 à 19:42:19

                                    A quoi ressemble l'URL de l'article ? Est-ce que le slug est bien renseigné ?
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      20 novembre 2015 à 10:24:44

                                      re bonjour a tous ,cela fait plus de deux jours que je bloque sur ce pbm

                                      j ai mon url.py

                                      from django.conf.urls import patterns,url
                                      
                                      
                                      urlpatterns = patterns('blog.views',
                                          
                                          url(r'^commentaire$', 'commentaire')
                                      ) 

                                      mon models.py

                                      class Commentaire(models.Model):
                                          pseudo = models.CharField(max_length=100)
                                          email = models.EmailField(max_length=254,default="mail@xxx.fr")
                                          contenu = models.TextField(max_length=254,default='blabla')
                                          
                                          def __str__(self):
                                              return self.pseudo
                                         
                                          

                                      mon forms.py

                                      from django import forms
                                      from blog.models import Commentaire
                                      
                                      
                                      class CommentaireForm(forms.ModelForm):
                                      
                                          class Meta:
                                              model = Commentaire
                                              fields='__all__'
                                      

                                      mon views.py

                                      def commentaire(request):
                                      
                                          if request.method == 'POST':  
                                      
                                              form = CommentaireForm(request.POST)  
                                              if form.is_valid():
                                                   
                                                  form.save()
                                                  envoi = True
                                      
                                              else:
                                                  form = CommentaireForm()  
                                      
                                      
                                          return render(request, 'blog/commentaire.html', locals())

                                      j 'ai fais des test en mode console apparemment tout fonctionne parfaitement ( BDD,formulaire) pourtant j ai l erreur 404 ,no article matches the given query

                                      j ai certainement oublié quelque chose mais je n arrive pas a voir ou??

                                      merci pour vos reponses



                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        20 novembre 2015 à 10:27:34

                                        j ai oublié mon commentaire.html ;)

                                        {% extends "blog/base.html" %}
                                        
                                        
                                        
                                        {% block content %}
                                        
                                        {% if envoi %}Votre message a bien ete envoye !{% endif %}
                                        	<form action="{% url 'blog.views.commentaire' %}" method="post" class="pure-form">
                                        
                                        		{% csrf_token %}
                                        
                                           		 {{ form.as_p }}
                                        
                                        		<p style="text-align:center">
                                        			<input class="pure-button pure-button-primary" type="submit" />
                                        		</p>
                                        	</form>
                                        {% endblock %}


                                        voila tout y est :)

                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          26 novembre 2015 à 16:51:11

                                          je crois que l'erreur est là : url(r'^commentaire$''commentaire')

                                          Si je me souviens bien, tu ne peux pas mettre de $ à la fin du lien ou bien de ^ au début mais je ne suis pas sûr de ce que je dis.

                                          -
                                          Edité par odjeuye 27 novembre 2015 à 10:49:41

                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            29 novembre 2015 à 12:15:06

                                            Bonjour,

                                            Je suis au chapitre des formulaires (ma config : archlinux x64, python 3.5.0-2, django 1.8.6-1).

                                            J´ai pas mal d´erreurs qui se sont affichées à la section : «Des formulaires à partir de modèles », et je veux partager mes solutions ici pour les prochains.

                                            Dans forms.py :

                                            J´ai dû rajouter  fields = '__all__' à la classe ArticleForms pour que ça fonctionne. À ne pas faire en production pour des raisons de sécurité apparemment ; il faudrait sélectionner précisément les fields que l´ont veut. J´ai dû virer la classe ContactForm

                                            Dans views.py :

                                            J´ai dû importer ArticleForm, virer le if... else et mettre ça à la place :

                                            if request.method == 'POST':  # S'il s'agit d'une requête POST
                                                    form = ArticleForm(request.POST)  # Nous reprenons les données
                                                    envoi = True
                                            
                                                else: # Si ce n'est pas du POST, c'est probablement une requête GET
                                                    form = ArticleForm()  # Nous créons un formulaire vide


                                            Je pense que ça devrait être plus détaillé dans le cours, on est sur le site du zéro (enfin plus maintenant mais l´esprit reste).

                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              1 décembre 2015 à 13:00:37

                                              Bonjour voici mon problème :

                                              Après un makemigrations il me dit qu'il me manque Pillow et que je peux le faire avec un pip install Pillow,

                                              Mais quand je le fais il me dit que je l'ai déjà (already satisfied... Un truc comme ça) et quand je fais un "where python" j'ai 2 chemins (peut etre la source du problème)

                                              Je ne sais plus quoi faire... Help

                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                1 décembre 2015 à 21:47:36

                                                JuJuZe a écrit:

                                                Bonjour voici mon problème :

                                                Après un makemigrations il me dit qu'il me manque Pillow et que je peux le faire avec un pip install Pillow,

                                                Mais quand je le fais il me dit que je l'ai déjà (already satisfied... Un truc comme ça) et quand je fais un "where python" j'ai 2 chemins (peut etre la source du problème)

                                                Je ne sais plus quoi faire... Help

                                                Tu as essayé de désinstaller et réinstaller pillow ?

                                                C´est quoi ton OS ?

                                                -------

                                                Voici les erreurs ou manques que j´ai relevé dans la première partie « gestion de fichiers / enregistrer une image» :

                                                • Après avoir ajouté la class Contact dans models.py, il faut faire python manage.py makemigrations et python manage.py migrate.
                                                • Dans settings.py, il faut configurer MEDIA_ROOT sans les slashs autour de media, sinon ça créé le répertoire photo dans /media/ et non dans cheminDuProjet/media/

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

                                                • dans views.py, il faut ajouter from blog.forms import NouveauContactForm. Dans la fonction nouveau_contact, j´ai remplacé la dernière ligne par return render(request, 'nouveau_contact.html', locals())
                                                • j´ai donc mis la ligne suivante dans urls.py : url(r'^nouveau_contact/$', 'nouveau_contact'),
                                                • j´ai créé le fichier nouveau_contact.html et y ai mis le code du template du cours. Par contre, j´ai dû le mettre dans blog/template/ et non pas dans blog/template/blog/ sinon le serveur ne le trouvais pas ???

                                                J´ai dû faire tout ça pour que ça fonctionne, sinon c´était erreurs à répétition. Est-ce qu´il n´y a que chez moi que ça fait ça ou le cours est incomplet/pas assez détaillé ?

                                                edit : pourquoi ça formate bizarrement la deuxième puce ?

                                                -
                                                Edité par carrion crow 2 décembre 2015 à 9:34:24

                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  2 décembre 2015 à 5:31:05

                                                  Mon OS c'est Windows 10

                                                  et oui j'ai essayé mais de toutes façons je crois que j'ai 2 Python

                                                  ou que Pillow ne s'installe pas au bon endroit,

                                                  puisqu'il est installé mais quand j'essaye de m'en servir ou lance un truc qui en a besoin il me dit de l'installer et quand je l'installe il me dit que je l'ai déjà

                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    2 décembre 2015 à 8:22:58

                                                    JuJuZe a écrit:

                                                    Mon OS c'est Windows 10

                                                    et oui j'ai essayé mais de toutes façons je crois que j'ai 2 Python

                                                    ou que Pillow ne s'installe pas au bon endroit,

                                                    puisqu'il est installé mais quand j'essaye de m'en servir ou lance un truc qui en a besoin il me dit de l'installer et quand je l'installe il me dit que je l'ai déjà


                                                    Tu as bien pillow pour la version de python que tu utilises ? J´ai deux versions dans les dépôts, une pour python(3) et une pour python2. Je suis sous archlinux, mais je pense que sous windows c´est pareil.

                                                    Si tu as python2 installé et que tu ne t´en sers pas, tu pourrais le virer, ça éviterais certains problèmes je pense.

                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      2 décembre 2015 à 9:17:22

                                                      Oui, résolu pour moi : MERCI !!!!!!!!!!!

                                                      Au passage si vous faites ça : 

                                                      MEDIA_URL = '/media/'

                                                      MEDIA_ROOT = os.path.join(BASE_DIR, MEDIA_URL)

                                                      et que vous ne trouvez pas vos images, elles sont dans C:\media (ou chez moi : C:\media\photos (C'est le bug suivant pour moi alors je le précise, même si pour le moment c'est hors sujet ;-) )

                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                        2 décembre 2015 à 16:40:22

                                                        J´en ai marre de ce cours ou chaque ligne de code provoque une erreur ; j´ai commandé Two Scoops of Django: Best Practices for Django 1.8

                                                        J´espère que ça sera mieux et que je passerai mon temps à apprendre des choses et non à chercehr à comprendre pourquoi ça ne fonctionne pas.

                                                        -
                                                        Edité par carrion crow 2 décembre 2015 à 16:40:40

                                                        • Partager sur Facebook
                                                        • Partager sur Twitter
                                                          2 décembre 2015 à 18:01:56

                                                          Bonjour les Djangistes,

                                                          j'ai testé le code MiniURL de la solution.

                                                          je travaille sur Mac osx 10.6 avec python 2.7

                                                          J'affiche la page mais lorsque je valide, j'ai cette erreur.

                                                          Je ne vois pas le problème en ligne 19 .

                                                          et dans le terminal j'ai cette ligne

                                                          [02/Dec/2015 17:03:06] "POST /m/nouveau HTTP/1.1" 500 80959
                                                          

                                                          Merci pour une piste

                                                          Voilà l'erreur :

                                                          TypeError at /m/nouveau
                                                          generer() takes exactly 1 argument (2 given)
                                                          Request Method:	POST
                                                          Request URL:	http://127.0.0.1:8000/m/nouveau
                                                          Django Version:	1.8.5
                                                          Exception Type:	TypeError
                                                          Exception Value:	
                                                          generer() takes exactly 1 argument (2 given)
                                                          Exception Location:	/Users/laurentvignaux/siteDjango/crepes_bretonnes/mini_url/models.py in save, line 19
                                                          Python Executable:	/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python
                                                          Python Version:	2.7.0
                                                          Python Path:	
                                                          ['/Users/laurentvignaux/siteDjango/crepes_bretonnes',
                                                           '/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/setuptools-18.3.2-py2.7.egg',
                                                           '/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pip-7.1.2-py2.7.egg',
                                                           '/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/virtualenv-1.9.1-py2.7.egg',
                                                           '/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Django-1.8.5-py2.7.egg',
                                                           '/Library/Frameworks/Python.framework/Versions/2.7/lib/python27.zip',
                                                           '/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7',
                                                           '/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin',
                                                           '/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac',
                                                           '/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages',
                                                           '/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk',
                                                           '/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-old',
                                                           '/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload',
                                                           '/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages']
                                                          Server time:	mer, 2 Déc 2015 16:52:16 +0000

                                                          Voici le fichier models.py :

                                                          #-*- coding: utf-8 -*-
                                                          from django.db import models
                                                          import random
                                                          import string
                                                          
                                                          # Create your models here.
                                                          class MiniURL(models.Model):
                                                          	url = models.URLField(verbose_name ="URL à réduire", unique=True)
                                                          	code = models.CharField(max_length=6, unique=True)
                                                          	date = models.DateTimeField(verbose_name ="Date d'enregistrement", auto_now_add=True)
                                                          	pseudo = models.CharField(max_length=255, blank=True, null=True)
                                                          	nb_acces = models.IntegerField(default=0, verbose_name ="nb acces URL")
                                                          	
                                                          	def __unicode__(self):
                                                          		return "[{0}] {1}".format(self.code, self.url)
                                                          	
                                                          	def save(self, *args, **kwargs):
                                                          		if self.pk is None:
                                                          			self.generer(6)
                                                          		
                                                          		super(MiniURL, self).save(*args, **kwargs)
                                                          	
                                                          	def generer(nb_caracteres):
                                                          		caracteres = string.ascii_letters + string.digits
                                                          		aleatoire = [random.choice(caracteres) for _ in range(nb_caracteres)]
                                                          		
                                                          		self.code = ''.join(aleatoire)
                                                          	
                                                          	class Meta:
                                                          		verbose_name = "Mini URL"
                                                          		verbose_name_plural = "Minis URL"

                                                          ps:  __unicode__ pour  __str__ car p2.7

                                                          -
                                                          Edité par lvdesign 2 décembre 2015 à 18:19:56

                                                          • Partager sur Facebook
                                                          • Partager sur Twitter
                                                            5 décembre 2015 à 9:21:24

                                                            Hello,

                                                            Je viens de trouver où se trouve le problème.

                                                            Dans le cours en ligne : 

                                                            def generer(nb_caracteres):
                                                                    caracteres = string.ascii_letters + string.digits
                                                                    aleatoire = [random.choice(caracteres) for _ in range(nb_caracteres)]
                                                                     
                                                                    self.code = ''.join(aleatoire)

                                                            Dans le livre et le ebook

                                                            def generer (self , N):
                                                            caracteres = string . letters + string . digits
                                                            aleatoire = [ random . choice ( caracteres ) for _ in xrange (
                                                            N)]
                                                             self.code = ''.join(aleatoire)

                                                            N équivaut à nb_caracteres

                                                            Voilà pourquoi il manquait un attribut

                                                            generer() takes exactly 1argument (2given)

                                                            Au  fait y-a-t il des gens qui suivent ce cours ?

                                                            Pleins d'erreurs de code, une maniere compliquée de faire des choses simples.

                                                            La partie "Avancé n'est que la bonne manière de faire.

                                                            Voir les tutos du site Django ou même cette vidéo édifiante de Kenneth Love

                                                            A cette adresse c'est meme vraiment agréable d'appendre d'utiliser django 

                                                            http://tutorial.djangogirls.org/fr/django_start_project/index.html

                                                            merci à tous

                                                            -
                                                            Edité par lvdesign 5 décembre 2015 à 16:23:22

                                                            • Partager sur Facebook
                                                            • Partager sur Twitter
                                                              9 décembre 2015 à 22:28:24

                                                              Bonsoir,

                                                              j'ai relu plusieurs fois le chapitre sur les formulaires

                                                              et je n'ai pas trouvé encore le moyen d'appeler un formulaire dans la page article ?

                                                              Si vous avez une piste ? …

                                                              merci d'avance:magicien:

                                                              • 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