search
LoginSignup
1

More than 1 year has passed since last update.

posted at

updated at

Djangoで初めてのHello World

Djangoを勉強し始めて2ヶ月目の駆け出しエンジニアです。
初めての投稿なので、Djangoでブラウザに「Hello World」を出力するまでを記録していきます。

環境

  • Macで開発
  • Python 3.7.5
  • Django 2.2.6

Djangoをインストール

pip install django==2.2.6

まずは上記のコマンドで Django をインストールします。今回は Django 2.2.6 を使用しますので django の後ろに ==2.2.6 をつけてバージョンを指定します。

念のために、実際にインストールされているかを下記のコマンドで確認してください。

$ python -m django --version
2.2.6

プロジェクトを作成

インストールができましたら、次はプロジェクトを作成します。
まず、下記のコマンドで myapp というディレクトリーを作成します。

$ mkdir myapp 

その後、

$ cd myapp 

上記のコマンドで myapp ディレクトリーに移動し、下のコマンドを実行してプロジェクトを作成します。

myapp
$ django-admin startproject conf . 

conf というプロジェクトが作成されたか次のコマンドで確認してください。

myapp
$ ls 
conf  manage.py 

conf と mange.py が作成されていればオッケーです。
全体のディレクトリー構成図は以下のようになっているはずです。

myapp
|
├── manage.py
|
└── conf
    ├── __init__.py
    ├── settings.py
    ├── urls.py
    └── wsgi.py

アプリケーションを作成

Djangoでは、プロジェクトの中で、複数のアプリケーションを作成できます。
今回は、helloというアプリケーションを作成します。

myapp
$ python manage.py startapp hello 

以下のディレクトリー構成図になっているはずです。

myapp
|
├── manage.py
|
├── conf
|   ├── __init__.py
|   ├── settings.py
|   ├── urls.py
|   └── wsgi.py
|
└── hello
    ├── __init__.py
    ├── admin.py
    ├── apps.py
    ├── migrations
    │   └── __init__.py
    ├── models.py
    ├── tests.py
    └── views.py

このままだと、helloアプリケーションは適用されていないので、confsettings.pyhelloアプリケーションが追加されたことを教えるための設定を行なう必要があります。

conf/settings.py
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'hello',
]

INSTALLED_APPS'hello'を追加すると認識され適用されます。
新しいアプリケーションを作成するたびに上記のように追加していく必要があります。

URLの設定

次に、URLの設定を行います。confurl.pyだけにurlパターンを追加してもいいのですが、設定が大きくなるにつれ管理が大変になるのでアプリケーションごとに分けて設定するのがベストプラクティスです。

confurl.pyを以下のように編集します。

conf/urls.py
from django.contrib import admin
from django.urls import path, include  includeをインポート

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('hello.urls.py')), ⇦ 追加
]

まず、includeをインポートし、urlpatternsの中にpath('', include('hello.urls.py')),を追加。
これはinclude関数を用いて、helloアプリケーションのurls.pyを読み込んでいます。こうすることで、helloアプリケーションのurls.pyを編集することだけに集中できます。

次に、helloアプリケーションにurls.pyというファイルを作成します。アプリケーション側のurls.pyは、startappでは作成されないので、任意で作成する必要があります。

helloアプリケーションにurls.pyを作成したら、以下のように編集してください。

hello/urls.py
from django.urls import path

from . import views

urlpatterns = [
    path('', views.index),
]

from . import viewは同じ階層からviews.pyをインポートしています。
path('', views.index),は第一引数にurlのパスの指定をし(今回はからにしています。)、第二引数にurlパターンにマッチするview関数を指定します(次のステップでview関数を作成していきます)。第三引数には,urlの逆引き用でname='名前を指定'のように書きます。ですが
、今回は必要ないので省略しています。記入していません。

View関数の作成

さて、いよいよ最後の作業です。
view.pyを以下のように編集してください。

hello/views.py
from django.http import HttpResponse


def index(request):
    return HttpResponse('Hello World')

まず、 HttpResponseをインポートします。
次に、先ほどhelloアプリケーションのurls.pypath('', views.index),を作成したのですが、第二引数にあるindexが今回使われる関数になりますのでdef index(requset)となっています。
HttpResponse('Hello World')は()の中の、レスポンスとして返したい値を入れ、HttpResponseオブジェクトとして返します。

それでは、python manage.py runserverを実行してください。以下の表示が出ればオッケーです。

February 01, 2020 - 05:59:05
Django version 2.2.6, using settings 'conf.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

ブラウザでhttp://127.0.0.1:8000を開きます。

hello world.png

このように表示されていれば成功です。おめでとうございます!!!!

一言

Hello Worldを表示させることができたらエンジニアへの大きな一歩を踏んだも同然です。難しいと感じるかもしれませんが、継続的に学べばいずれ楽しさがわかってくると思います。
私も2ヶ月目でまだまだ駆け出しですがどんどん発信していきたいと思います。

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
What you can do with signing up
1