Bagaimana cara mengimpor url dari aplikasi di file url utama django
Saya memiliki struktur proyek berikut.

Ini adalah array INSTALLED_APPS saya.
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'climemanage.clients'
]
Kemudian saya mencoba menambahkan clients.urls
file di urls
file induk seperti di bawah ini.
from django.contrib import admin
from django.urls import include, path
urlpatterns = [
path('admin/', admin.site.urls),
path('clients/', include('clients.urls'))
]
Tapi saya mendapatkan kesalahan ini. ModuleNotFoundError: No module named 'clients'
Saya bisa menyelesaikan ini dengan menggunakan jalur berikut. include('climemanage.clients.urls')
tapi saya ingin melompat climemanage
dari jalur.
Saya telah mencoba berbagai cara seperti,
import clients
import climemanage.clients
from climemanage import clients
Tapi tidak ada yang berhasil.
Jawaban
Struktur proyek Anda salah. Tampaknya salah satu startproject
bagian atau startapp
bagian mungkin salah. Mungkin lebih baik jika Anda dapat membuat daftar bagaimana Anda sampai pada titik ini. Silakan lihat struktur yang saya letakkan di akhir jawaban saya.
Dalam kasus Anda, induk Anda di settings.py
bawah clients
. Artinya itu clients
adalah hasil dari startproject
. Saat ini Anda tidak memiliki app
, tetapi Anda memiliki banyak file yang seharusnya muncul dengan folder app
yang sekarang ada di bawah migrations
.
Karena itu, Anda tidak akan pernah bisa menambahkan apapun dari clients.urls
ke utama urls.py
. Karena Anda clients
adalah tempat utama Anda urls.py
berada.
Saya meletakkan apa yang biasanya saya lakukan di sini (versi mac ini, jika Anda menggunakan windows, Anda perlu memeriksa tutorial 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
kemudian setelah itu, ketika Anda menjalankan startproject
perintah Anda , pastikan berjalan seperti di bawah ini:
django-admin startproject project .
Perhatikan .
bagian akhirnya.
Setelah itu, Anda harus memiliki struktur seperti:
clienmanage
|--- manage.py
|--- project
| |--- __init__.py
| |--- settings.py
| |--- urls.py
| |--- wsgi.py
|--- virtual
|
|___ requirements.txt
maka Anda akan:
$ 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
Setelah langkah ini, django tidak akan secara otomatis menghasilkan app
level urls.py
dan forms.py
. Anda harus membuat file-file ini di dalam app
folder (dalam contoh kasus saya, clients
)
**** Jika Anda ingin meletakkan aplikasi di direktori yang berbeda Anda dapat menentukan tujuan.
$ python manage.py startapp <app_label> [destination]
dalam kasus di atas, jika Anda ingin memiliki app
bagian dalamproject
$ python manage.py startapp clients project/clients
Jika Anda mengambil rute ini, pastikan untuk menambahkan, project.clients
bukan clients
di INSTALLED_APPS
.
Di file urls.py utama Anda dapat menambahkan potongan kode berikut.
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('something/', include('clients.urls')),
]
Di file 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
]
Tolong tunjukkan halaman client.urls.py Anda.