djangoメインURLファイルのアプリからURLをインポートする方法
私は次のプロジェクト構造を持っています。

これは私のINSTALLED_APPS配列です。
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'climemanage.clients'
]
次に、以下のようにclients.urls
親urls
ファイルにファイルを追加してみました。
from django.contrib import admin
from django.urls import include, path
urlpatterns = [
path('admin/', admin.site.urls),
path('clients/', include('clients.urls'))
]
しかし、このエラーが発生します。 ModuleNotFoundError: No module named 'clients'
次のパスを使用してこれを解決できます。include('climemanage.clients.urls')
しかし、私climemanage
はパスからスキップしたいと思います。
私はさまざまな方法を試しました、
import clients
import climemanage.clients
from climemanage import clients
しかし、何も機能していません。
回答
プロジェクトの構造が間違っています。どちらかと思われるstartproject
一部またはstartapp
一部かもしれないが間違って行って。この時点までの経緯をリストアップできれば最高かもしれません。答えの最後に書いた構造をご覧ください。
あなたの場合、あなたのメインsettings.py
はの下にありclients
ます。これは、それclients
がの結果であることを意味しstartproject
ます。現在、はありませんが、フォルダの下に表示さapp
れるはずのファイルがたくさんあります。app
migrations
そのため、clients.urls
メインからメインに何も追加することはできませんurls.py
。あなたclients
はあなたのメインがurls.py
位置する場所だからです。
私は通常行うことをここに置きます(このMacバージョン、Windowsを使用している場合は、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
その後、startproject
コマンドを実行するときは、必ず次のように実行してください。
django-admin startproject project .
.
最後に注意してください。
その後、次のような構造になります。
clienmanage
|--- manage.py
|--- project
| |--- __init__.py
| |--- settings.py
| |--- urls.py
| |--- wsgi.py
|--- virtual
|
|___ requirements.txt
その後、あなたはします:
$ 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
このステップの後、djangoはapp
レベルurls.py
とを自動的に生成しませんforms.py
。これらのファイルはapp
フォルダー内に生成する必要があります(私の例ではclients
)
****アプリを別のディレクトリに配置する場合宛先を指定できます。
$ python manage.py startapp <app_label> [destination]
上記の場合、あなたがあなたのapp
内側を持ちたいならproject
$ python manage.py startapp clients project/clients
このルートを使用したproject.clients
場合clients
は、ではなく必ず追加してくださいINSTALLED_APPS
。
メインのurls.pyファイルに、次のコードスニペットを追加できます。
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('something/', include('clients.urls')),
]
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
]
client.urls.pyページを見せてください。