"BOKU"のITな日常

62歳・文系システムエンジニアの”BOKU”は日々勉強を楽しんでます

django3.0インストール後の最低限の設定とHello world迄/Windows10 + anaconda + python3.7

django3.0をインストールして新規プロジェクトを作った後の最低限の設定と、とりあえずHello world的なものだけ作ります。

f:id:arakan_no_boku:20190320212948j:plain

 

前提です

 

djangoのインストールと、新規プロジェクトの生成までできている前提です。

arakan-pgm-ai.hatenablog.com

上記の記事では、プロジェクトの名前を「demos」と仮付けしましたので、今回もそれにならっていきます。

 

djangoの設定ファイル(settings.py)最低限の設定

 

新規生成した時点で、プロジェクトフォルダには多数のフォルダ・ファイルが生成されてます。

 

追加フォルダの作成

 

まず、demosフォルダの下はこうなってます。

f:id:arakan_no_boku:20191214133808p:plain

ここに「static」と「templetes」フォルダを作ります。

f:id:arakan_no_boku:20200418225335p:plain

staticフォルダは、画像やCSSなどの静的ファイルの置き場所です。

templetesフォルダはHTMLファイルを置く場所です。

なお、templatesとするのが一般的っぽいですが、別に変更しても問題はありません。

 

settings.py修正

 

demos/demosに以下のファイルがあります。 

f:id:arakan_no_boku:20191214134027p:plain

この「settings.py」が設定ファイルです。

これをを開いて、以下の記述の部分を探して修正していきます。 

言語とタイムゾーンを日本にします。

LANGUAGE_CODE = 'ja'

TIME_ZONE = 'Asia/Tokyo'

 HTMLファイルの置き場所を定義します。

デフォルトでは以下のようにDIRSが空で定義されています。

TEMPLATES = [
{
     'BACKEND': 'django.template.backends.django.DjangoTemplates',
     'DIRS': ,
     'APP_DIRS': True,
     'OPTIONS': {
          'context_processors': [
               'django.template.context_processors.debug',
               'django.template.context_processors.request',
               'django.contrib.auth.context_processors.auth',
               'django.contrib.messages.context_processors.messages',
           ],
       },
    },
]

 

この'DIRS': のところに、HTMLファイルを置くフォルダ名を書きます。

前に作成したフォルダ名と一致しているのが前提です。

'DIRS': [
      os.path.join(BASE_DIR, 'templates'),
],

最後尾あたりの「STATIC_URL = '/static/'」の記述の下あたりに、以下を追加します。

これは前で作成した「static」フォルダの場所を教える設定です。

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static'),
]

 

データベースの設定もsettings.pyです。

Djangoで使用するデータベースはデフォルトで「sqllite3」です。

なので、デフォルトでは以下のように定義されています。

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

他のデータベースを使うのであれば、変更しますが、DBを使うようになってから後で変更できるので、いったんこのままにしときます。

ここまでで、基本的な設定は終わりです。

 

Hello Worldでも 作ってみる

 

まずはhello.pyをつくります。

 

hello.py

 

from django.shortcuts import render

def hello(request):
    return render(request, 'hello.html')

 

urls.py

 

今度は、 urls.py  を開きます。 

さっき、定義したhello.pyをインストールして、URLパターンに定義したメソッドの名前を渡します。

from django.contrib import admin
from django.urls import path
from . import hello

urlpatterns = [
    path('admin/', admin.site.urls),
    path('hello/',hello.hello,name='hello'),
]

 

赤色にしている部分が書き足したところです。 

「'hello/',hello.hello,name='hello'」

上記の最初の「hello/」はURLです。

上記の場合http://localhost:8000/hello/」のURLで、viewフォルダの下の「hello.html」にアクセスします。

次の「hello.hello」は、hello.pyの中のメソッド名です。

「name='hello'」の「hello」は、HTML名(hello.html)を指します。

ここの綴りを間違えると、正しく表示できません。 

 

HTMLの作成

 

最後に、templetesフォルダの下に、hello.htmlを用意します。  

今回は、超手抜きHTMLファイルで・・。

 <html>
<head>
</head>
<body>
       <h1>Hello World!!</h1>
</body>
</html>

 

実行

 

さて。

やってみます。

f:id:arakan_no_boku:20180126224250j:plain

いけました。

 

Djangoテンプレート言語も使ってみる

 

views.pyを以下のように変更してみます。

「date」という名前で日付文字列を渡しています。

from django.shortcuts import render
from datetime import datetime as dt


def hello_world(request):
    d = {
         'date':dt.now().strftime('%Y/%m/%d')
    }
    return render(request, 'hello_world.html',d)

定義した'date'をHTML内で{{ と }} に囲って参照します。

<html>
<head>
</head>
<body>
     <h1>Hello World!!</h1>
     <p>日付は{{date}}だよ!
</body>
</html>

 

日本語を使う場合に、注意するのはHTMLファイルの文字コードです。 

UTF-8です。

Windows上だと、デフォルトでSJISになっている場合が多いので、UTF8にしておかないと、SJISからUTF8に変換できない文字があると、処理がおちてしまいます。 

動かすと。

f:id:arakan_no_boku:20180126230603j:plain

OKです。