0
2

More than 3 years have passed since last update.

DjangoでWebサービスの枠を作るまで

Posted at

Djangoプロジェクトの構造

Djangoプロジェクトは、プロジェクトという大枠があり、その中にアプリケーションがあるという構造です。

image.png

プロジェクトは自分が作成したWebサイトを例えると、Appはブログ、Wiki、フォームなどがあります。
以下はmysiteというDjangoプロジェクトを作成し、そのなかにblogというAppを作成してみます。

プロジェクトの作成

以下のコマンドを実行します。

django-admin startproject mysite

生成されたプロジェクト構造を見てみましょう。

mysite/
    manage.py
    mysite/
      __init__.py
      asgi.py
      wsgi.py
      settings.py
      urls.py
  • manage.py
    • プロジェクトを操作するためのコマンドラインユーティリティです。編集する必要がありません。
  • mysite/
    • プロジェクトディレクトリ
  • __init__.py
    • mysiteディレクトリをPythonモジュールとして扱うように指定する空ファイル
  • asgi.py
    • ASGI(Asynchronous Server Gateway Interface) 非同期のWebサーバーとアプリケーションとして実行するための設定です。
  • wsgi.py
    • WSGI(Web Server Gateway Interface)アプリケーションとして実行するための設定です。
  • settings.py
    • プロジェクトの設定です。デフォルトでは、SQLite3データベースを使用するという基本的な設定と、一般的なDjangoアプリケーションが使用するINSTALLED_APPSのリストが含まれています。
  • urls.py
    • URLパターンの定義

続いてデータベースマイグレーションを行います。これで初期アプリケーション用のテーブルをデータベースに作成します。

cd mysite
python manage.py migrate

Djangoには軽量なWebサーバが付属していて、コードを素早く実行することができます。

python manage.py runserver

http://127.0.0.1:8000/ をブラウザで開き、プロジェクトが正常に実行されているページを確認できます。

image.png

実行コマンドで、カスタムなホストやポートの指定や、特定の設定ファイルを読み込ませることが可能です。

python manage.py runserver 127.0.0.1:8001 \--settings=mysite.settings

Djangoの開発サーバを実行すると、コードの変更をチェックし続けます。リロードは自動的に行われます。

アプリケーションの作成

以下のコマンドを実行します。

python manage.py startapp blog

アプリケーションの構造が生成されます。

blog/
    migrations/
        __init__.py
    __init__.py
    admin.py
    apps.py
    models.py
    tests.py
    views.py
  • migrations/
    • アプリケーションのデータベースマイグレーション
  • admin.py
    • Django管理サイトにモデルを登録できます。管理サイトの利用はオプションです。
  • apps.py
    • アプリケーションの設定
  • models.py
    • アプリケーションのデータモデル
  • tests.py
    • アプリケーションのテスト
  • views.py
    • アプリケーションのロジックで、各ビューはHTTPリクエストを受け取り、それを処理してレスポンスを返します。

以上でWebサービスの枠を作ってみました。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2