SE_BOKUのまとめノート的ブログ

SE_BOKUが知ってること・勉強したこと・考えたことetc

Django3プロジェクトで「Hello world」&「日付表示」/Windows10 + anaconda

f:id:arakan_no_boku:20190320212948j:plain

目次

django3プロジェクトの最低限の設定

django3.で新規プロジェクト作成後の最低限の設定をしてHello worldで確認します。

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

arakan-pgm-ai.hatenablog.com

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

最低限の設定1:追加フォルダの作成

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

f:id:arakan_no_boku:20191214133808p:plain

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

f:id:arakan_no_boku:20200418225335p:plain

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

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

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

最低限の設定2:言語・タイムゾーン・DIRS

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

f:id:arakan_no_boku:20191214134027p:plain

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

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

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

LANGUAGE_CODE = 'ja'

TIME_ZONE = 'Asia/Tokyo'

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

以下のimportを追加します。

import os

デフォルトでは以下のように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'),
]

 

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

Hello Worldを作成する

最終的には日本語も使おうと思います。

その場合、HTMLファイルの文字コードUTF-8です。

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

それをふまえてはじめます。

最初のPythonソース

まずは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)を指します。

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

templetesフォルダにHTML作成

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

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

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

さて。

やってみます。

f:id:arakan_no_boku:20180126224250j:plain

いけました。

テンプレート言語で日本語と日付を表示するように変更

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

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

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


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

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

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

動かすと。

f:id:arakan_no_boku:20180126230603j:plain

OKですね。

ではでは。