教材の内容に関係のない質問や教材とは異なる環境・バージョンで進めている場合のエラーなど、教材に関係しない質問は推奨していないため回答できない場合がございます。
その場合、teratailなどの外部サイトを利用して質問することをおすすめします。教材の誤字脱字や追記・改善の要望は「文章の間違いや改善点の指摘」からお願いします。
実際にDjangoでWebアプリケーションを作成します。まだDjangoの環境構築が終わっていない方は0章に環境構築方法を記載しているので、そちらを参考に環境構築を行ってください。
Copied!- Djangoのプロジェクトとアプリの違い
- Djangoプロジェクトの作成方法
- ローカルサーバーの起動方法
プロジェクトとは、データベースの設定などのDjango全体の設定群をまとめたひとつの単位です。
また、プロジェクトとは別にアプリケーションという単位が存在します。アプリケーションは実際のWebアプリケーションのことです。ひとつのDjangoプロジェクトには複数のアプリケーションを作成することができます。
プロジェクトとアプリケーションの違いについては、公式ドキュメントにも記述がありますので補足として引用します。
プロジェクトとアプリケーションの違いとは何でしょうか?アプリケーションとは、実際に何らかの処理を行う Web アプリケーションを指します。例えばブログシステムや公開レコードのデータベース、単純な投票アプリといった具合です。プロジェクトとは、あるウェブサイト向けに設定とアプリケーションを集めたものです。一つのプロジェクトには複数のアプリケーションを入れられ ます。また、一つのアプリケーションは複数のプロジェクトで使えます。
アプリケーションをどのように分割するのか、明確な基準はないため、正直熟練者であっても悩ましいところです。
ただし、今回のコースでは1プロジェクト1アプリで作成していきますので、心配しないでくださいね。
それでは、実際にプロジェクトを作成してみましょう!
最初に、あらかじめDjangoのプロジェクトを格納するディレクトリ kanban
を作って、その中に移動しておきます。
Copied!$ mkdir kanban
$ cd kanban
下記コマンドでプロジェクトを作成できます。
Copied!$ pipenv run django-admin startproject config .
pipenv run
は「pipenvで作成した仮想環境上で」という意味です。 run
以降をpipenvの仮想環境上で実行します。
プロジェクトを作成するコマンドは django-admin startproject <プロジェクト名> <作成するディレクトリ>
となっています。
<作成するディレクトリ>
は省略できますが、 .(ドット)
を指定することでカレントディレクトリ直下にプロジェクトを展開してくれるようになります。
また、ここでは <プロジェクト名>
を config
としています。本来であれば kanban
などにすべきですが、実際のプロジェクト名には設定ファイルが集約されるので、 config
とすることで、設定ファイルが config
内に作成されます。
少々わかりにくいですが、 .(ドット)
と合わせて、これもプロジェクトをわかりやすく作成するためのコツです。
私は実務でもこのように作成していますので、ぜひ試してみてくださいね。
プロジェクトを作成することで、以下のようなディレクトリ構成になります。
Copied!kanban
├── Pipfile
├── Pipfile.lock
├── config
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
└── manage.py
Pipfile
と Pipfile.lock
はPipenvでDjangoをインストールした際に自動で生成されたものです。Pythonのバージョンやライブラリの情報がまとめられています。
./kanban/config
以下には4つのファイルが存在します。
./kanban/config/__init__.py
は、Pythonにディレクトリを認識させるためのファイルです。 __init__.py
がディレクトリ内に存在しないと、そのディレクトリのファイルを参照できなくなります。特別なことがない限り、 __init__.py
は空のファイルとなります。
./kanban/config/settings.py
は、Djangoプロジェクト全体に関わる設定を記述するファイルです。データベースの設定などもこのファイルに記述します。
./kanban/config/urls.py
は、ルーティング(URLの設定)を記述するファイルです。プロジェクトを作成した段階で、自動的にadminページ(管理画面機能)のルーティングが設定されています。
./kanban/config/wsgi.py
は、WSGI(Web Server Gateway Interface)に関する設定を記述するファイルです。ざっくり言うと、サーバーに関する設定を記述しますが、開発サーバーであれば初期設定で動作するので、このコースでは特段編集しません。
ちなみにWSGIはウィズギーと読みます。
./kanban/manage.py
は開発サーバーを起動したり、データベースのマイグレート(作成)をしたりする際の命令を行うためのファイルです。
Copied!$ python manage.py <コマンド名>
で、あらかじめ定義されたコマンドを実行できます。
プロジェクトを作成すると、開発用のサーバーが起動できるようになります。早速起動してみましょう。
下記コマンドで開発サーバーを起動できます。
Copied!$ pipenv run python manage.py runserver
Copied!You have 17 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.
といったエラーが出るかと思いますが、一旦はスルーして大丈夫です。
下記のように表示されて、 http://127.0.0.1:8000/ で開発サーバーにアクセスできます。ブラウザで開いてみましょう。
Copied!Django version 2.2, using settings 'config.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
ブラウザで http://127.0.0.1:8000/ にアクセスすると、下記のようなページに飛ぶかと思います。
正しく表示されていれば、無事にプロジェクトが作成できています!おめでとうございます🎉
初めまして、田中です。
pipenv run django-admin startproject config .
実行時、
ディレクトリ構造を確認したところ下記ファイルが作成されませんでした。
・Pipfile
・Pipfile.lock
サーバー自体は起動し想定通り動作しております。
こちらどのような原因が考えられますでしょうか。
また存在しなくても進めることができますでしょうか。
はじめまして、谷口です。
「【Django】trello風todoタスク管理アプリを作成しよう」について、ご質問します。当方は、最近PyCharm pro 環境で、本django学習をはじめました。当方の環境は OS Mac OS Catalina、Anaconda Navigator 1.9.12 環境、python は3.6選択可、DjangoもVe指定ができます。今まで、Condaによる仮想環境でDjango開発サーバーにアクセスまで確認しております。
私の環境には、pipenvをインストールしておりませんので、プロジェクト作成の段階において行き詰まっています。
pipenv を使用せずに、現行のPyCharm proを使いDjango仮想環境にて勉強したいのですが、下記と同等な開発フォルダーをPycharmで構築する方法について、ご教授していただけないでしょうか?
kanban
├── Pipfile
├── Pipfile.lock
├── config
│ ├── init.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
└── manage.py
以上、よろしくお願い致します。
Error: the command django-admin could not be found within PATH or Pipfile's [scripts].
プロジェクト作成のコマンド入力をした時にこのようなエラーが出てしまいます。
カリキュラム通りにkanbanフォルダの中でプロジェクト作成するとエラーになりますが、kanbanフォルダの上の階層でするとうまく作成できます。kanbanフォルダの中には「pipfile」ができています。
↓全文はこちらです。
$ pipenv run django-admin startproject config .
Courtesy Notice: Pipenv found itself running within a virtual environment, so it will automatically use that environment, instead of creating its own for any project. You can set PIPENV_IGNORE_VIRTUALENVS=1 to force pipenv to ignore that environment and create its own instead. You can set PIPENV_VERBOSITY=-1 to suppress this warning.
Error: the command django-admin could not be found within PATH or Pipfile's [scripts].
ご教示おねがいします。