Bagaimana cara mengimpor url dari aplikasi di file url utama django

Dec 01 2020

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.urlsfile di urlsfile 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 climemanagedari jalur.

Saya telah mencoba berbagai cara seperti,

import clients
import climemanage.clients
from climemanage import clients

Tapi tidak ada yang berhasil.

Jawaban

1 ha-neul Dec 01 2020 at 13:51

Struktur proyek Anda salah. Tampaknya salah satu startprojectbagian atau startappbagian 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.pybawah clients. Artinya itu clientsadalah hasil dari startproject. Saat ini Anda tidak memiliki app, tetapi Anda memiliki banyak file yang seharusnya muncul dengan folder appyang sekarang ada di bawah migrations.

Karena itu, Anda tidak akan pernah bisa menambahkan apapun dari clients.urlske utama urls.py. Karena Anda clientsadalah tempat utama Anda urls.pyberada.

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 startprojectperintah 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 applevel urls.pydan forms.py. Anda harus membuat file-file ini di dalam appfolder (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 appbagian dalamproject

$ python manage.py startapp clients project/clients

Jika Anda mengambil rute ini, pastikan untuk menambahkan, project.clientsbukan clientsdi INSTALLED_APPS.

Ashwathama Dec 01 2020 at 13:08

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

Tolong tunjukkan halaman client.urls.py Anda.