Djangoのディレクトリについて調べた

Djangoプロジェクトのディレクトリ Webアプリ開発日記

開発環境できたし、開発するべ!となったはいいものの、

今回採用したDjangoのフレームワークのルールがよく分からない…。
各ディレクトリに何のファイルを置けばいいのか、ということが分からないと手も足も出ないと思って、ひとまず調べることにしました。

結論としては、公式ドキュメントに全て書いてありました。
なので、言うことはもはやないのですが、一応自分が思ったことを書きます。

プロジェクトはアプリケーションとは違う!!

最初はそうと知らず、混乱しました。
MVCのフレームワークって聞いたけど、
Pycharmが作ってくれたディレクトリたちを見て

example/
    manage.py
    example/
        __init__.py
        settings.py
        urls.py
        wsgi.py

「どこが???」と思ってしまっていたのですが、この構成を手に入れた後に
まだやるべきことがあったみたいですね。お恥ずかしい。

公式サイトだとこのコマンド↓でアプリケーション用のディレクトリを作りましょう、とガイドしています。(manage.pyと同じ階層で)

$ python manage.py startapp polls

ということは……

複数機能があるようなアプリケーションを作りたい時は、複数のアプリケーションのディレクトリを作らなきゃいけないってこと?

結論としてはそうみたいですね。

正確には「作らなきゃいけない」って感じでもなさそうですが、
「そういうこともできますよ」くらいの感じでしょうか。
この辺はどうするのか、実装しながら考えることになりそうです。

今回、私はセルフコーチングがお手軽にできるWebアプリを作りたいと思っているので、
とりあえずcoachingのアプリケーションディレクトリを作ることにします。
(初めてのアプリ開発なので、内心、どういう手順で進めるべきか迷っています…。本当なら先に色々要件を決めた方がいいのだろうけど、今はコード書きたい欲を優先しています。
そういう意思決定をしたことを忘れるな、ここに立ち戻ってきた私。)

$ python manage.py startapp coaching
File "manage.py", line 16
) from exc
^
SyntaxError: invalid syntax

なんやねーん。python3だとうまく行くのかな。

$ python3 manage.py startapp coaching
Traceback (most recent call last):
File "manage.py", line 10, in main
from django.core.management import execute_from_command_line
ModuleNotFoundError: No module named 'django'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "manage.py", line 21, in <module>
main()
File "manage.py", line 16, in main
) from exc
ImportError: Couldn't import Django. Are you sure it's installed and available on your PYTHONPATH environment variable? Did you forget to activate a virtual environment?

うまく行かないが、Oops
そういえば、開発環境立ち上げていませんでしたね。

$ docker-compose up -d 
% docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
445925f2b84e clearer_web "python3" 11 hours ago Up 11 hours 0.0.0.0:8000->8000/tcp clearer_web_1
2cde70ea24cc postgres:10 "docker-entrypoint.s…" 11 hours ago Up 11 hours 5432/tcp clearer_db_1
$ docker container exec -it 445925f2b84e python manage.py runserver 0.0.0.0:8000
Performing system checks...

System check identified no issues (0 silenced).

You have 15 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.

July 27, 2019 - 01:07:46
Django version 2.1.1, using settings 'Clearer.settings'
Starting development server at http://0.0.0.0:8000/
Quit the server with CONTROL-C.

立ち上がりました。これでどうか、ということでもう一度

$ python3 manage.py startapp coaching

しかし、同じエラーが出ました。ただ、きになるのは、

ModuleNotFoundError: No module named 'django'

そもそもDjangoをinstallしていないのかも。

$ pip3 install django

これをやってもう一度、

$ python3 manage.py startapp coaching
$ ls
Clearer/ Dockerfile coaching/ docker-compose.yml manage.py* requirements.txt templates/ venv/

やりました!

コメント

タイトルとURLをコピーしました