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.