🐈

Djangoをローカルで起動する。

2020/11/29に公開

Python3でDjangoを使えるか確認

python3 -m django --version

バージョンが表示されたらインストール済み。インストールされていないならdjangoをインストールする。
公式サイトを参考にする。公式推奨の方法ではpipをローカルにインストールしている必要がある。

djangoのアプリディレクトリを作成する

django-admin startproject [プロジェクト名] [どのディレクトリに作成するか]でアプリを作ることができる

mkdir pythonProject//アプリディレクトリを作成
cd pythonProject
django-admin startproject helloWorldProject .

余談:Djangoをローカルで起動する

上記のコマンドで、hpythonProjectのディレクトリにmanage.pyを作成される。
manage.pyファイルがある箇所で、以下のディレクトリを打つとローカルで実行できる(詳しくは後述)

python3 manage.py runserver

helloWorldProjectアプリにhello機能をつける

helloWorldProjectのアプリ内にあるhelloアプリの作成

URL「ドメイン/hello」にアクセスすると画面に文字を表示するメソッドを作る。

manage.pyがあるディレクトリ
python3 manage.py startapp hello

helloWorldProjectに、helloアプリを読み込ませる

helloWorldProject/setting.py
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    #この記述を追記
    'hello',
]

heloWorldProjectにルーティング設定

helloアプリのviews.pyファイルに記されているindex()関数を読み込むようにする。
一般的にアプリごとにurlsファイルを作った方がわかりやすいため、そちらで記載(includeメソッドを利用する)

urls.py
from django.urls import path, include # include 追加1

urlpatterns = [
    path('admin/', admin.site.urls),
    #追記2
    path('', include('hello.urls')),]

helloアプリの中にurls.pyファイルを作る

上記のincludeの設定で読み込ませた、helloアプリのurls.pyファイルの中にルーティングを記載する

hello/urls.py(新規作成)
from django.urls import path

from . import views

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

ルーティングの結果、views.pyないのindexメソッドを記載する

hello/views.py(追記ではなくて全部記載)
from django.http import HttpResponse

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

djangoのアプリをローカルで起動する

以下のコマンドで実行できる。実行後にどのURLにアクセスしたら良いのかを記している

python3 manage.py runserver

結果はこんな感じ

Django version 3.1.3, using settings 'helloWorldProject.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

上記の場合、http://127.0.0.1:8000/ にてアクセスできる。

当記事の場合、http://127.0.0.1:8000/hello にアクセスするとhello worldと表示される。

まとめ

できたよ!やったね!

Discussion