So importieren Sie URLs von Apps in die Django-Haupt-URLs-Datei

Dec 01 2020

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.urlsDatei in der übergeordneten urlsDatei 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 climemanagevom Pfad springen.

Ich habe verschiedene Wege ausprobiert,

import clients
import climemanage.clients
from climemanage import clients

Aber nichts funktioniert.

Antworten

1 ha-neul Dec 01 2020 at 13:51

Ihre Projektstruktur ist falsch. Es scheint, dass entweder ein startprojectTeil oder ein startappTeil 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.pyunter clients. Dies bedeutet, dass dies clientsdas Ergebnis von ist startproject. Derzeit haben Sie keine app, aber Sie haben eine Reihe von Dateien, die mit appdieser jetzt unter migrationsOrdner angezeigt werden sollen.

Davon abgesehen werden Sie niemals in der Lage sein, irgendetwas von clients.urlsmain hinzuzufügen urls.py. Weil du clientsder Ort bist, an dem sich dein Hauptort urls.pybefindet.

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 startprojectBefehl 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 appLevel urls.pyund forms.py. Sie sollten diese Dateien im appOrdner 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 appInneres haben möchtenproject

$ python manage.py startapp clients project/clients

Wenn Sie diesen Weg eingeschlagen haben, stellen Sie sicher, dass Sie ihn project.clientsnicht clientsin Ihrem hinzufügen INSTALLED_APPS.

Ashwathama Dec 01 2020 at 13:08

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
]
Skip_god Dec 01 2020 at 14:19

Zeigen Sie mir bitte Ihre client.urls.py-Seite.