Après la mise à niveau vers Django 4.0, j'obtiens l'erreur suivante lors de l'exécution python manage.py runserver
from django.conf.urls
from myapp.views import home
urlpatterns = [
url(r'^$', home, name="home"),
url(r'^myapp/', include('myapp.urls'),
]
4 Réponses :
django.conf.urls.url () a été obsolète dans Django 3.0, et est supprimé dans Django 4.0 +.
La correction la plus simple consiste à remplacer Alternativement, vous pouvez passer à l'utilisation Si vous avez un Grand projet avec de nombreux modèles d'URL à mettre à jour, vous pouvez trouver le django-upgrade bibliothèque utile pour mettre à jour votre url () / Code> avec re_path () . re_path utilise regexes comme url , vous n'avez donc qu'à mettre à jour l'importation et remplacer url par re_path . p> from django.urls import include, path
from myapp.views import home
urlpatterns = [
path('', home, name='home'),
path('myapp/', include('myapp.urls'),
]
path . path () n'utilise pas les regex, vous devrez donc mettre à jour vos modèles d'URL si vous passez à Path. from django.urls import include, re_path
from myapp.views import home
urlpatterns = [
re_path(r'^$', home, name='home'),
re_path(r'^myapp/', include('myapp.urls'),
]
URLS.py fichiers.
Ceci est très important, notamment parce que le dernier tutoriel PyCharm chez JetBrains utilise toujours django.conf.urls. Surtout pour les nouveaux gens, il est toujours déconcertant d'avoir du code copié à partir d'un tutoriel qui vous rompt.
Merci, mais je ne sais pas encore pourquoi j'obtiens url du modèle initial pendant que j'avais installé Django4
@ user.dz le django 4.0 modèle n'utilise pas url . Si vous vous retrouvez avec url dans votre modèle, vous avez probablement une version antérieure de Django installée. Exécuter quel django-admin ou django-admin --version pourrait vous aider à déterminer ce qui se passe. Utilisez python -m django pour vous assurer d'utiliser le django correct pour votre Env virtuel, par ex. python -m django startProject myproject .
Vous avez raison, j'ai été surpris de voir django-admin version 1.11 dans un environnement virtuel. Je fais du balayage et nettoie pour la maison, trouvé: Python 2.7, 3.6, 3.7, 3.8, 3.9, 3.10 dans / usr / local et un autre python dans Library (macOS ). Le mien a été installé dans Library et lié dans / opt D'une manière ou d'une autre, cela prenait la priorité. Je le supprime et je commence de zéro avec des modèles corrects.
Je préfère le changement à l'utilisation du chemin, il semble plus approprié ...
Voir dans la version Django 4.0 Cela ne fonctionnera pas. Ainsi, lors de l'installation de Django dans votre environnement virtuel, sélectionnez cette version
pip install django == 3.2.10
Cela résoudra certainement votre erreur et dans principaux URLS.py faites ceci:
à partir de django.conf.urls Import Url
à partir de django.urls d'importation, incluez
La rétrogradation de Django 3 est une solution temporaire. À un moment donné, les utilisateurs doivent passer à Django 4 ou version ultérieure, et à ce stade, vous devez remplacer url () s
De plus, il est probablement plus sûr pour pip install 'django <4.0' que de choisir une version épinglée
Je pense qu'une solution rapide à ce problème consiste à faire des suites;
vous pouvez facilement remplacer
from django.urls import re_path as url
à ceci:
from django.conf.urls import url
Cire ceci en changeant ...
from django.urls import re_path as url
et bien sûr en remplaçant re_path par url dans urlpatterns code>
Cela semble être une remise des réponses précédentes.