0
7

More than 3 years have passed since last update.

Djangoアプリケーション作成から画面表示まで

Last updated at Posted at 2019-12-08

Djangoインストール後に何をやったらいいかわからない方へ

今回はdjangoを使って画面に好きな文字列を表示してみるチュートリアルです。
どんな仕組みでバックエンドの処理がされているのか、わかると思います。

ここでの作業は、manage.pyが入っているプロジェクトフォルダ上で作業を行います。

目標は自分でアプリ作成してから、サンプル程度にエクスプローラー画面に好きな文字を表示させることです。
少しややこしくなってきますので、無理なく進めてゆきましょう!

コマンドでアプリを作成する

まだプロジェクトが作成されていない方はこちらでチュートリアルを確認できます。
それではコチラのコマンドを入力してください。

$ python manage.py startapp test_app

出来上がったアプリを確認

mysite/
 |---manage.py
 |---mysite/
 |     |---__init__.py
 |     |---settings.py
 |     |---urls.py
 |     |---asgi.py
 |     |---wsgi.py
 |---test_app/(ここが追加されました)
      |---__init__.py
      |---admin.py
      |---apps.py
       |---migrations/
       |    |---__init__.py
      |---models.py
      |---tests.py
      |---views.py

mysite/mysiteと同じ階層にtest_appが作成されたでしょうか?

それでは次のステップに進みましょう。

ファイル編集用のテキストエディタの準備

テキストエディタをお持ちの方は次に飛んで構いません。

私はPycharmを利用しています。

初心者やプログラミング言語の文法に慣れていない方は、Atomというテキストエディタをお勧めします。
操作が分かりやすく、最初は私はAtomを使っていました。
ごちゃごちゃエラーの指摘をされたり、波線が多く出てくると自分のコードに自信が持てなくなる可能性がありますよね。
そのためにもシンプルなテキストエディタからまずは始めるのがおすすめです。
インストール方法URL

settings.pyにアプリConfigを追加

ALLOWED_HOSTSINSTALLED_APPS'*''test_app.apps.TestAppConfig',を追加しています。

settings.py
ALLOWED_HOSTS = ['*']
# Application definition
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'test_app.apps.TestAppConfig',
]

Django 1.5以降ではALLOWED_HOSTSの設定が必要となっています。
これは、公開するドメイン名を指定しています。
とは、なんでもよいよ、といったワイルドカードの意思表示です。

さらに、INSTALLED_APPS'test_app.apps.TestAppConfig',を加えています。

|---test_app/
|    |---__init__.py
|    |---admin.py
|    |---apps.py
|     |---migrations/
|     |    |---__init__.py
|    |---models.py
|    |---tests.py
|    |---views.py

ここのapps.pyの中身を見てみると、

test_app/apps.py
class TestAppConfig(AppConfig):
    name = 'test_app'

とあり、TestAppConfigINSTALLED_APPSに追加していることを意味しています。
アプリ名から自動的に大文字変換などもされてクラスが出来上がっているのですね、これになぜ?と感じても,まずはこんなものなのだと理解しておく必要があります。

割りきりが大切!後になって分かるときを待ちましょう。混乱する気持ちは痛いほどわかります💦

ここまで出来たら、今度はルーティングを作成します。

urls.pyでルーティングの設定を行う

指定したURLを打つと、エクスプローラ画面に"Hello""こんにちは!"と表示させることが目標です。

具体的には、http://localhost:8000/index/と打つと、Helloと表示する、という流れです。ちゃんとURLにindex/と入力されていますね。
無題4.png

mysite/mysite/urls.py
from django.contrib import admin
from django.urls import path,include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('',include('test_app.urls')),
]

include関数を用いて、アプリのurls.pyを含めるように設定します。
importも忘れずにお願いします。
このように大元のmysiteではinclude関数を用いつつ、アプリ側で新たにurls.pyを作成しルーティングを設定してゆきます。
これは慣れです。Djangoの特有な設定かもしれません。

現在、大元のurls.pytest_appのurls.py作成→test_appのルーティング設定→views関数作成
といった流れになってます。
test_appの中身にurls.pyを新たに作成しましょう。
そして、中のコードはこのようになります。

test_app/urls.py
from django.urls import path
from . import views

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

path関数を使用するとかんたんなURL記法でルーティング設定ができます。

views.pyimportするために.を用いていますが、Djangoが今のファイル名までのルーティングパスを指定してくれているため、.はviews.pyurls.pyが含まれているディレクトリ名を表してくれています。
このおかげでviews.indexとviewsファイルの中のview関数を呼び出せるのです。

name='index'とは、このルーティングの名前を設定しています。
表紙画面であればindex、詳細画面であればdetailとパスに近しいわかりやすい名前を指定するとよいです。
ここではindexとしておき、必要になったら復習を行ってください。

views.pyにてHttpResponseを用いて画面表示(今回最後の作業)

test_app/views.py
from django.http import HttpResponse
# Create your views here.
def index(request):
    return HttpResponse('Hello')

urls.pyで設定したviews.indexに紐づき、indexという名前の関数を用意しました。
引数はrequestとなっており、html側から送られてくるgetデータを扱いたい場合などに用いられます。
djangoファイルとhtmlとの橋渡し的な存在のイメージで構いません。

HttpResponseの引数は自由に変えられます。文字列型であるところに注意。importも忘れずにお願いします。

エラーなくサーバーを実行してみると、

python manage.py runserver

無題4.png
このように表示されれば成功です!

最後に

画面に好きな文字は表示できましたでしょうか?
今回は基本であるものの最初にマスターしておきたい作業なので、行き詰ったらこの作業を練習してみると楽しくなると思います。
いろいろとファイルを行ったり来たりして面倒ですが、各ファイルurls.py,settings.py,views.pyの役割を抑えると、案外簡単に使いこなせると思います。
3か月以上見積もって、ゆっくりと使いこなせるよう頑張ってください。私ももがきやっとできるようになったのですから。

エラーなどで全く思い通りにいかない!という場合はエラー文をググってみたり、わかりやすいサイトで見本通りやってみることが大事です。
試行錯誤よりも、できることの中で練習をしていくほうが私なりの勉強法としてお勧めします。

0
7
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
7