はじめに
DjangoのWebアプリケーション作成時につまったところを記載します。
開発環境
- Windows 10 (version 1809)
- Python version : 3.7.1
- Django version : (2, 1, 7, 'final', 0)
- IDE : Visual Studio Code
ディレクトリ構成
プロジェクトの中に一つのアプリケーションがある場合のディレクトリ構成を以下に記載します。
- プロジェクト名 : project
- アプリケーション名 : myapp
project ├── myapp │ ├── migrations │ ├── __init__.py │ ├── admin.py │ ├── apps.py │ ├── model.py │ ├── tests.py │ └── views.py │ ├── project │ ├── __init__.py │ ├── settings.py │ ├── urls.py │ └── wsgi.py │ ├── db.sqlite3 └── manage.py
Djangoでmodel.pyを書き換える場合の注意点
model.pyを変更した場合は、以下の2つのコマンドを忘れずに実施してください。実施しないとmodel.pyの変更が反映されません。(´;ω;`)
- Jangoフレームワークにモデルを作成したり、変更したことを伝えるコマンド
py manage.py makemigrations [アプリ名]
- 上記を実際に反映させるコマンドもさらに必要
py manage.py migrate
関数仕様を調べたい
- すぐに見つからなかったら、公式ドキュメントを参照しましょう
Djangoでサーバーを起動しようとしたときにエラーが発生する
サーバーを起動するコマンドを入力したとき(py manage.py runserver
)
以下のように、エラーが発生する場合があります。 エラーを見るときは、後ろから見ます。後ろから新しいエラーがあるためです。
すると、最後のエラーを見ると、employee.appsがパッケージにないようです・・・。
ModuleNotFoundError: No module named 'employee.apps.EmployeeConfigdjango'; 'employee.apps' is not a package
C:\Users\uv2ut\PycharmProjects\project2>py manage.py runserver Unhandled exception in thread started by <function check_errors.<locals>.wrapper at 0x000002158F8B7840> Traceback (most recent call last): File "C:\Users\uv2ut\AppData\Local\Programs\Python\Python37\lib\site-packages\django\utils\autoreload.py", line 225, in wrapper fn(*args, **kwargs) File "C:\Users\uv2ut\AppData\Local\Programs\Python\Python37\lib\site-packages\django\core\management\commands\runserver.py", line 109, in inner_run autoreload.raise_last_exception() File "C:\Users\uv2ut\AppData\Local\Programs\Python\Python37\lib\site-packages\django\utils\autoreload.py", line 248, in raise_last_exception raise _exception[1] File "C:\Users\uv2ut\AppData\Local\Programs\Python\Python37\lib\site-packages\django\core\management\__init__.py", line 337, in execute autoreload.check_errors(django.setup)() File "C:\Users\uv2ut\AppData\Local\Programs\Python\Python37\lib\site-packages\django\utils\autoreload.py", line 225, in wrapper fn(*args, **kwargs) File "C:\Users\uv2ut\AppData\Local\Programs\Python\Python37\lib\site-packages\django\__init__.py", line 24, in setup apps.populate(settings.INSTALLED_APPS) File "C:\Users\uv2ut\AppData\Local\Programs\Python\Python37\lib\site-packages\django\apps\registry.py", line 89, in populate app_config = AppConfig.create(entry) File "C:\Users\uv2ut\AppData\Local\Programs\Python\Python37\lib\site-packages\django\apps\config.py", line 116, in create mod = import_module(mod_path) File "C:\Users\uv2ut\AppData\Local\Programs\Python\Python37\lib\importlib\__init__.py", line 127, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 1006, in _gcd_import File "<frozen importlib._bootstrap>", line 983, in _find_and_load File "<frozen importlib._bootstrap>", line 953, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed File "<frozen importlib._bootstrap>", line 1006, in _gcd_import File "<frozen importlib._bootstrap>", line 983, in _find_and_load File "<frozen importlib._bootstrap>", line 962, in _find_and_load_unlocked ModuleNotFoundError: No module named 'employee.apps.EmployeeConfigdjango'; 'employee.apps' is not a package
原因は、settings.pyにおいて、'employee.apps.EmployeeConfig'の後にカンマがないことでした。(-_-)
INSTALLED_APPS = [ 'employee.apps.EmployeeConfig' 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', ]