Comment importer des URL à partir d'applications dans le fichier d'URL principal de Django
J'ai la structure de projet suivante.

Ceci est mon tableau INSTALLED_APPS.
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'climemanage.clients'
]
Ensuite, j'ai essayé d'ajouter le clients.urls
fichier dans le urls
fichier parent comme ci-dessous.
from django.contrib import admin
from django.urls import include, path
urlpatterns = [
path('admin/', admin.site.urls),
path('clients/', include('clients.urls'))
]
Mais j'obtiens cette erreur. ModuleNotFoundError: No module named 'clients'
Je peux résoudre ce problème en utilisant le chemin suivant. include('climemanage.clients.urls')
mais je veux sauter climemanage
du chemin.
J'ai essayé différentes manières comme,
import clients
import climemanage.clients
from climemanage import clients
Mais rien ne fonctionne.
Réponses
La structure de votre projet est erronée. Il semble startproject
qu'une partie ou une startapp
partie ait mal tourné. Ce serait peut-être mieux si vous pouviez énumérer comment vous vous êtes rendu à ce point. Veuillez voir la structure que j'ai mise à la fin de ma réponse.
Dans votre cas, votre principal settings.py
est sous clients
. Cela signifie que clients
c'est le résultat de startproject
. Actuellement, vous n'en avez pas app
, mais vous avez un tas de fichiers qui devraient apparaître avec app
celui-ci maintenant sous le migrations
dossier.
À cause de cela, vous ne pourrez jamais ajouter quoi que ce soit de clients.urls
à principal urls.py
. Parce que vous clients
êtes l'endroit où se trouve votre principal urls.py
.
Je mets ce que je fais normalement ici (cette version mac, si vous utilisez Windows, vous devez vérifier le didacticiel django)
$ mkdir clienmanage $ cd clienmanage
$ python3 -m venv myvenv # set up virtual environment $ source myvenv/bin/activate # go into virtual envionment
After this step you can install django
puis après cela, lorsque vous exécutez votre startproject
commande, assurez-vous d'exécuter comme ci-dessous:
django-admin startproject project .
Notez le .
à la fin.
Après cela, vous devriez avoir une structure comme:
clienmanage
|--- manage.py
|--- project
| |--- __init__.py
| |--- settings.py
| |--- urls.py
| |--- wsgi.py
|--- virtual
|
|___ requirements.txt
alors vous allez:
$ python manage.py startapp clients
clienmanage
|
|---clients # this is the app
| |---migrations
| |---models.py
| |---views.py
| |---apps.py
|--- manage.py
|--- project
| |--- __init__.py
| |--- settings.py
| |--- urls.py
| |--- wsgi.py
|--- virtual # a folder
|
|___ requirements.txt
Après cette étape, django ne générera pas automatiquement le app
niveau urls.py
et forms.py
. Vous devez générer ces fichiers dans le app
dossier (dans mon exemple de cas, clients
)
**** Si vous souhaitez placer l'application dans un répertoire différent, vous pouvez spécifier la destination.
$ python manage.py startapp <app_label> [destination]
dans le cas ci-dessus, si vous voulez avoir votre app
intérieur deproject
$ python manage.py startapp clients project/clients
Si vous avez emprunté cette voie, assurez-vous d'ajouter project.clients
plutôt que clients
dans votre fichier INSTALLED_APPS
.
Dans le fichier principal urls.py, vous pouvez ajouter l'extrait de code suivant.
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('something/', include('clients.urls')),
]
Dans le fichier settings.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
'webapi', # like in my case my appname was webapi
'nameofyourapp', #pay attention here
]
Montrez-moi votre page client.urls.py, s'il vous plaît.