j'ai un problème lors de l'activité de la partie 2 je n'arrive pas a lancer le projet de le dezip mais je ne peux pas le lancer avec "py manage.py runserver" cela me donne l'erreur suivante , est ce que quelqu'un sait comment régler le problème .
On dirait que les fichiers fournis pour faire cet exercice ne sont pas compatibles avec la nouvelle version de Django. J'ai essayé de rectifier les fichiers mais j'ai du mal.
effectivement il y a un problème sur ce cours, il faudrait à minima préciser quelle version est utilisée (Python, django...) à défaut de mettre à jour.
salut, je suis passionné par la programmation et surtout par python, mais le seul souci est que je n'ai pas le baccalauréat, je ne sais donc pas si je peux apprendre à programmer avec python sur ce site sans avoir un bac
@FranchescoRodriguez Bonjour, ce n'est pas le sujet pour ce genre de question. Il n'y a pas de condition pour apprendre un langage sauf celle de vouloir apprendre.
Je suis le cours django à la lettre et j'ai un problème dans la migration de mes données. J'ai Django V3.0.3.
Voici mon fichier classe models.py
from django.db import models
from django.utils import timezone
class Article(models.Model):
titre = models.CharField(max_length=100)
auteur = models.CharField(max_length=42)
contenu = models.TextField(null=True)
date = models.DateTimeField(default=timezone.now,
verbose_name="Date de parution")
categorie = models.ForeignKey('Categorie', on_delete=models.CASCADE)
class Meta:
verbose_name = "article"
ordering = ['date']
def __str__(self):
"""
Cette méthode que nous définirons dans tous les modèles
nous permettra de reconnaître facilement les différents objets que
nous traiterons plus tard dans l'administration
"""
return self.titre
class Categorie(models.Model):
nom = models.CharField(max_length=30)
def __str__(self):
return self.nom
J'ai ensuite effectué dans le shell:
python manage.py makemigrations blog
python manage.py --run-syncdb
J'ai par la suite le prompt qui s'ouvre me demandant de remplir les entrées vides par 1, ce que je fais. Jusqu'ici tout se passe bien mais lorsque je rentre le bloc ci dessous:
>>> from blog.models import Categorie, Article
>>> cat = Categorie(nom="Crêpes")
>>> cat.save()
>>> art = Article()
>>> art.titre = "Les nouvelles crêpes"
>>> art.auteur = "Maxime"
>>> art.contenu = "On a fait de nouvelles crêpes avec du trop bon rhum"
>>> art.categorie = cat
>>> art.save()
la ligne art.save() me renvoie l'erreur suivante
OperationalError: table blog_article has no column named categorie_id
J'ai essayé de supprimer la Class Categorie et réimporté / synchroniser ma db, sans succès.
J'ai également vérifié que mes métadonnées etaieent importées :
Pourriez-vous me conseiller?
Cdlt, Sylvain
- Edité par sylvainreissier1 24 mars 2020 à 16:33:44
Je sais pas quel cours tu suis, mais je ne suis pas sûr qu'il soit à jour, au cas où va voir du côté du site officiel, il est en français.
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard) La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
je suis entrain de travailler sur un projet Django pour appliquer ce cours.
je rencontre une difficulté au niveau de la validation d'un champ de type 'choices' d'un modèle dans un formulaire
Mon modèle est le suivant:
class Commande(models.Model):
mod_prod=(('0', '0'),('1', '1'),('2', '2'),('3', '3'))
pays = (('CMR','Cameroun'),('NGA','Nigeria'),('NER','Niger'))
production= models.IntegerField( choices=mod_prod,blank=False)
pays=models.CharField(max_length=3, choices=pays,blank=False)
region = models.CharField(max_length=250,blank=False)
depart =models.CharField(max_length=250,blank=False)
ville =models.CharField(max_length=250,blank=False)
numero_batiment =models.IntegerField()
date_ponte=models.DateField(blank=False,default=timezone.now())
date_peremption=models.DateField(default=timezone.now())
date_command=models.DateField(default=timezone.now())
etat = models.CharField(max_length=10,default="non pay ")
user=models.ForeignKey(User,on_delete=models.CASCADE, verbose_name='Proprietaire')
Mon formulaire est le suivant
class CommandeUser(ModelForm):
class Meta:
model=Commande
fields=['production','pays','region','depart','ville','numero_batiment','date_ponte']
labels={'production':_('Mode de production') ,'pays':_('Pays de production'),'region':_('R gion de production'),'depart':_('Departement')
Lorsque je rempli ce formulaire et je valide j'obtiens l'erreur :
Sélectionnez un choix valide. 1 n'en fait pas partie.
Le field production s'attend à recevoir un entier, toi tu lui donnes un caractère, soit un type string. Modifie soit en charfield ton champ production, soit tu modifies le type de tes valeurs en entiers dans mod_prod
N'oublie pas de faire un migrate pour prendre en considération tes changements.
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard) La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
[Résolu] : J'ai oublié l'action dans le formulaire ;)
Bonjour,
J'ai un soucis sur la partie des uploads d'images. Quand j'upload l'image il me renvoi sur la page juste avant ( de /blog/contact/ à /blog/) et l'image n'est pas upload. Il se trouve aussi que le formulaire est toujours false :
views.py
def nouveau_contact(request):
sauvegarde = False
#il ne faut pas oublier le request.FILES sinon ça ne marche pas
form = NouveauContactForm(request.POST or None, request.FILES or None)
print ("erreur : ")
print(form.is_valid)
if form.is_valid():
contact = Contact()
contact.nom = form.cleaned_data["nom"]
contact.adresse = form.cleaned_data["adresse"]
contact.photo = form.cleaned_data["photo"]
contact.save()
sauvegarde = True
return render(request, 'blog/contact.html', {
'form': form,
'sauvegarde': sauvegarde
})
forms.py
class NouveauContactForm(forms.Form):
nom = forms.CharField()
adresse = forms.CharField(widget=forms.Textarea)
photo = forms.ImageField()
models.py
class Contact(models.Model):
nom = models.CharField(max_length=255)
adresse = models.TextField()
# ici on utilise ImageField avec le lien ou l'uploader
photo = models.ImageField(upload_to="blog/photos/")
def __str__(self):
return self.nom
settings.py
# Media files
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, "media")
En d'autres mots, j'ai fait exactement comme dans le cours. et j'ai installé pillow
J'en suis au chapitre 4, dans la sous partie sur les utilisateurs
j'ai recopié les morceaux de code donnés dans le cours pour mettre en place les méthodes de connexion
La première fois que je suis allé sur la page 'connect', le serveur m'a informé que j'étais connecté avec le compte 'superuser' que j'avais créé un peu plus tôt dans le cours. Je me suis donc déconnecté et depuis, à chaque fois que je veux me reconnecter je reçois en réponse une erreur 405 de la part du serveur (apparemment je ne peux pas exécuter cette requête 'POST')
est-ce que quelqu'un a déjà eu affaire à cette erreur ou sait comment la coriger?
Ci dessous une capture d'écran de mon invite de commande
Pour info je n'utilise pas la version de django utilisée dans le cours (2.0) mais la dernière version (3.0.5)
Je suis comme vous le cours avec la version python avec la version 3.8, j'utilise visual studio est aucun import n'est reconnu : unresolved import 'django.contrib'Python(unresolved-import)
Je pense que c'est parce que il ne trouve pas le fichier mais il est pourtant présent dans C:\Users\NomPrenom\AppData\Local\Programs\Python\Python38-32\Lib\site-packages\django\contrib\admin
Je n'ai aucune idée de comment résoudre ce problème il est présent dés que le fichier auquel je veux accéder n'est pas dans le même répertoire que le fichier actuel.
Je suis comme vous le cours avec la version python avec la version 3.8, j'utilise visual studio est aucun import n'est reconnu : unresolved import 'django.contrib'Python(unresolved-import)
Je pense que c'est parce que il ne trouve pas le fichier mais il est pourtant présent dans C:\Users\NomPrenom\AppData\Local\Programs\Python\Python38-32\Lib\site-packages\django\contrib\admin
Je n'ai aucune idée de comment résoudre ce problème il est présent dés que le fichier auquel je veux accéder n'est pas dans le même répertoire que le fichier actuel.
En vous remerciant d'avance pour votre réponse.
Bonjour Léa j'utilise aussi VSC et j'ai aussi souvent ce genre de choses
Est ce que cela arrive lorsque tu essayes de lancer ton programme ou est ce que tu as plutôt ce genre de problème:
Je suis comme vous le cours avec la version python avec la version 3.8, j'utilise visual studio est aucun import n'est reconnu : unresolved import 'django.contrib'Python(unresolved-import)
Je pense que c'est parce que il ne trouve pas le fichier mais il est pourtant présent dans C:\Users\NomPrenom\AppData\Local\Programs\Python\Python38-32\Lib\site-packages\django\contrib\admin
Je n'ai aucune idée de comment résoudre ce problème il est présent dés que le fichier auquel je veux accéder n'est pas dans le même répertoire que le fichier actuel.
En vous remerciant d'avance pour votre réponse.
Bonjour Léa j'utilise aussi VSC et j'ai aussi souvent ce genre de choses
Est ce que cela arrive lorsque tu essayes de lancer ton programme ou est ce que tu as plutôt ce genre de problème:
Je ne sais pas si tu as déjà essayé de lancer tes codes mais normalement ce problème ne devrait pas empêcher tes programmes de fonctionner.
Si je ne me trompe pas, ils sont dû à un debugger supplémentaire implémenté dans vsc qui détecte les fautes (par exemple les fautes d'indentation ou d'importation) mais, je ne sais pas pourquoi, il ne trouve pas le module django, ce qui fait qu'il indique une erreur d'importation. Par contre si tu lances ton programme dans le terminal, il saura trouver django et ne t'indiquera pas d'erreur
File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
File "<frozen importlib._bootstrap>", line 991, in _find_and_load
File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 783, in exec_module
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "C:\Users\pc\Documents\TutoDjango\crepes_bretonnes\crepes_bretonnes\wsgi.py", line 16, in <module>
application = get_wsgi_application()
File "C:\Users\pc\AppData\Local\Programs\Python\Python38\lib\site-packages\django\core\wsgi.py", line 13, in get_wsgi_application
return WSGIHandler()
File "C:\Users\pc\AppData\Local\Programs\Python\Python38\lib\site-packages\django\core\handlers\wsgi.py", line 127, in __init__
self.load_middleware()
File "C:\Users\pc\AppData\Local\Programs\Python\Python38\lib\site-packages\django\core\handlers\base.py", line 35, in load_middleware
middleware = import_string(middleware_path)
File "C:\Users\pc\AppData\Local\Programs\Python\Python38\lib\site-packages\django\utils\module_loading.py", line 15, in import_string
raise ImportError("%s doesn't look like a module path" % dotted_path) from err
ImportError: blog doesn't look like a module path
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "C:\Users\pc\AppData\Local\Programs\Python\Python38\lib\threading.py", line 932, in _bootstrap_inner
self.run()
File "C:\Users\pc\AppData\Local\Programs\Python\Python38\lib\threading.py", line 870, in run
self._target(*self._args, **self._kwargs)
File "C:\Users\pc\AppData\Local\Programs\Python\Python38\lib\site-packages\django\utils\autoreload.py", line 53, in wrapper
fn(*args, **kwargs)
File "C:\Users\pc\AppData\Local\Programs\Python\Python38\lib\site-packages\django\core\management\commands\runserver.py", line 137, in inner_run
handler = self.get_handler(*args, **options)
File "C:\Users\pc\AppData\Local\Programs\Python\Python38\lib\site-packages\django\contrib\staticfiles\management\commands\runserver.py", line 27, in get_handler
handler = super().get_handler(*args, **options)
File "C:\Users\pc\AppData\Local\Programs\Python\Python38\lib\site-packages\django\core\management\commands\runserver.py", line 64, in get_handler
return get_internal_wsgi_application()
File "C:\Users\pc\AppData\Local\Programs\Python\Python38\lib\site-packages\django\core\servers\basehttp.py", line 47, in get_internal_wsgi_application
raise ImproperlyConfigured(
django.core.exceptions.ImproperlyConfigured: WSGI application 'crepes_bretonnes.wsgi.application' could not be loaded; Error importing module.
j'ai bien modifié la variable d'environnement et mon projet est bien créé.
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard) La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Django settings for crepes_bretonnes project. Generated by 'django-admin startproject' using Django 3.0.8. For more information on this file, see https://docs.djangoproject.com/en/3.0/topics/settings/ For the full list of settings and their values, see https://docs.djangoproject.com/en/3.0/ref/settings/ """ import os
# Build paths inside the project like this: os.path.join(BASE_DIR, ...) 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/3.0/howto/deployment/checklist/ # SECURITY WARNING: keep the secret key used in production secret! SECRET_KEY = 'x^4npemw&^*$sh=ve01prmut17y%&dj=o-#1yz$ud9dl@405t!' # SECURITY WARNING: don't run with debug turned on in production! DEBUG = True ALLOWED_HOSTS = []
Que fait 'blog' dans MIDDLEWARE, il devrait être dans INSTALLED_APPS. Ensuite exécute la commande makemigrations et migrate.
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard) La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Desole j'ai retire le texte de mon ancien post resolu pour pouvoir poster cette question:
dans le chapitre "ajouter les gabarits manquants" le code semble obsolete utiliser namespace:
ceci ne compile plus: url(r'^store/', include('store.urls', namespace='store')),
j'ai lu qu'il fallait remplacer par ces deux elements dans Django 3.1
url(r'^store/', include('store.urls')), dans /disquaire/urls et app_name = 'store' dans /store/urls
ca compile mais j'ai perdu tous mes champs d'images. les liens image dans l'index est: /store/static/store/img/picture.jpg au lieu de /static/store/img/picture.jpg et dans details: GET /store/5/static/store/img/picture.jpg
je ne comprends pas comment fonctionne les liens "picture" desormais. mes images sont dans /static/store/img/ merci pour votre aide. je voudrais finir ce cours cette semaine
- Edité par PhilippeGerard75 16 septembre 2020 à 4:25:45
Vous n'échouez qu'au moment ou vous arrêtez d'essayer. (Albert Einstein)
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
En cour
Vincent ERHART
Formateur / Développeur web
Je sais pas quel cours tu suis, mais je ne suis pas sûr qu'il soit à jour, au cas où va voir du côté du site officiel, il est en français.
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
A vaincre sans péril, on triomphe sans gloire!
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Vous n'échouez qu'au moment ou vous arrêtez d'essayer. (Albert Einstein)