djangoメインURLファイルのアプリからURLをインポートする方法

Dec 01 2020

私は次のプロジェクト構造を持っています。

これは私の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.urlsurlsファイルにファイルを追加してみました。

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

しかし、何も機能していません。

回答

1 ha-neul Dec 01 2020 at 13:51

プロジェクトの構造が間違っています。どちらかと思われるstartproject一部またはstartapp一部かもしれないが間違って行って。この時点までの経緯をリストアップできれば最高かもしれません。答えの最後に書いた構造をご覧ください。

あなたの場合、あなたのメインsettings.pyはの下にありclientsます。これは、それclientsがの結果であることを意味しstartprojectます。現在、はありませんが、フォルダの下に表示さappれるはずのファイルがたくさんあります。appmigrations

そのため、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

Ashwathama Dec 01 2020 at 13:08

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

client.urls.pyページを見せてください。