So importieren Sie URLs von Apps in die Django-Haupt-URLs-Datei
Ich habe die folgende Projektstruktur.

Dies ist mein INSTALLED_APPS-Array.
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'climemanage.clients'
]
Dann habe ich versucht, die clients.urls
Datei in der übergeordneten urls
Datei wie folgt hinzuzufügen .
from django.contrib import admin
from django.urls import include, path
urlpatterns = [
path('admin/', admin.site.urls),
path('clients/', include('clients.urls'))
]
Aber ich bekomme diesen Fehler. ModuleNotFoundError: No module named 'clients'
Ich kann dies auf folgendem Weg lösen. include('climemanage.clients.urls')
aber ich möchte climemanage
vom Pfad springen.
Ich habe verschiedene Wege ausprobiert,
import clients
import climemanage.clients
from climemanage import clients
Aber nichts funktioniert.
Antworten
Ihre Projektstruktur ist falsch. Es scheint, dass entweder ein startproject
Teil oder ein startapp
Teil schief gelaufen sein könnte. Am besten ist es, wenn Sie auflisten, wie Sie zu diesem Punkt gekommen sind. Bitte beachten Sie die Struktur, die ich am Ende meiner Antwort angegeben habe.
In Ihrem Fall ist Ihr Haupt settings.py
unter clients
. Dies bedeutet, dass dies clients
das Ergebnis von ist startproject
. Derzeit haben Sie keine app
, aber Sie haben eine Reihe von Dateien, die mit app
dieser jetzt unter migrations
Ordner angezeigt werden sollen.
Davon abgesehen werden Sie niemals in der Lage sein, irgendetwas von clients.urls
main hinzuzufügen urls.py
. Weil du clients
der Ort bist, an dem sich dein Hauptort urls.py
befindet.
Ich stelle hier, was ich normalerweise mache (diese Mac-Version, wenn Sie Windows verwenden, müssen Sie das Django-Tutorial überprüfen)
$ 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
Wenn Sie danach Ihren startproject
Befehl ausführen , stellen Sie sicher, dass Sie wie folgt ausgeführt werden:
django-admin startproject project .
Beachten Sie das .
am Ende.
Danach sollten Sie folgende Strukturen haben:
clienmanage
|--- manage.py
|--- project
| |--- __init__.py
| |--- settings.py
| |--- urls.py
| |--- wsgi.py
|--- virtual
|
|___ requirements.txt
dann wirst du:
$ 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
Nach diesem Schritt generiert Django nicht automatisch app
Level urls.py
und forms.py
. Sie sollten diese Dateien im app
Ordner generieren (in meinem Beispielfall clients
).
**** Wenn Sie die App in ein anderes Verzeichnis stellen möchten, können Sie das Ziel angeben.
$ python manage.py startapp <app_label> [destination]
im obigen Fall, wenn Sie Ihr app
Inneres haben möchtenproject
$ python manage.py startapp clients project/clients
Wenn Sie diesen Weg eingeschlagen haben, stellen Sie sicher, dass Sie ihn project.clients
nicht clients
in Ihrem hinzufügen INSTALLED_APPS
.
In der Hauptdatei urls.py können Sie das folgende Code-Snippet hinzufügen.
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('something/', include('clients.urls')),
]
In der Datei 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
]
Zeigen Sie mir bitte Ihre client.urls.py-Seite.