はじめに
未来電子テクノロジーでインターンをしている<小栗>です。
「プログラミング初心者であるため、内容に誤りがあるかもしれません。
もし、誤りがあれば修正するのでどんどん指摘してください。
この記事は、【Django入門】簡単なブログページを作る際の大まかな流れ ~プロジェクト編~
こちらの記事の続きです!
Django Brothersというサイトをまとめた
記事になっているので、Django初心者にはおすすめです!
アプリケーションとは
前回の記事の内容であるプロジェクトは「ウェブサービス全体に関する設定」であるのに対し、アプリケーションとは「ウェブサービスに必要な機能を実現する部分」のことを指します。
アプリケーションを作成する
コマンドはpython manage.py startapp
です。
python manage.py startapp blogs
ここで、作られたblogsというディレクトリがアプリケーションの一つであり、blogsディレクトリ内のファイルにコードを書いていきます。
アプリケーションを登録する
先ほど作成したblogs
アプリケーションをDjangoプロジェクトに登録する必要があります。
setting.pyファイルを開いて、INSTALLED_APPS
の部分に'blogs'
を追加します。
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blogs', #追加する
]
※アプリケーションを作ったら同様に追加します。
Djangoアプリケーションの全体像を把握する
DjangoBrothersとは順番が違いますが、先に全体像を把握しておいた方が、理解が深まったので先に上の画像でイメージをつかんでおくと良いと思います。
それぞれの大まかなはたらきは、以下です。
#####View
ユーザーは特定のURLにアクセスするとサーバーに対しリクエストを送ります。
そのユーザーからのリクエストをもとに、どのようなHTMLファイルを表示させるか(どのTemplatesを返すか)、どういった内容のデータを表示させるか決める処理をしています。
#####URL
URLに応じてどのViews関数を使うか指定する。
HTMLファイルでページを作成する
####トップページを作成する
django_blog/blogs/
ディレクトリ内にtemplates
ディレクトリ、その中にblogs
ディレクトリを作成し、
django_blog/blogs/templates/blogs/
という階層を作ります。
そして、このdjango_blog/blogs/templates/blogs/
内に
View
===
先ほど上でも紹介したので、Viewについては細かい内容をまとめます。
```python:django_blog/blogs/views.py
from django.shortcuts import render
def index(request):
return render(request, 'blogs/index.html')
views.py
ファイルに上記のコードを書きます。
この関数の内容を分解します。
#####index
関数の意味
ユーザーからの情報をもとに、index.htmlを返す関数
#####index
関数の引数であるrequest
について
request
はユーザーがURLを入力してサーバーにアクセスするときの情報
#####render
メソッドについて
request
をもとにindex.html
を表示することを意味している
URLの設定
先ほど作成したhtmlファイルをブラウザ上で表示される様にindex関数とURLを結びつけます。
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('blogs.urls')),
]
urls.py
ファイルを上記の内容に書き換えます。
内容を分解してまとめます。
二行目に追加したinclude
によってinclude関数が使えるようになります。
#####path('', include('blogs.urls'))
がしていること
最初の''
が意味するのは、URLが何も指定されていない事を示しています。
なので、pathの1行はhttp://127.0.0.1:8000/
にアクセスした場合、blogs.urls
ファイルを参照することを意味しています。
#####blogs.urlsについて
blogs.urlsファイルはblogsディレクトリ内に作成するurls.pyファイルのことです。
以下で内容をかみ砕いて説明します。
###blogsアプリケーション内でURLを設定する
今まで触ってきたurls.pyファイルはdjango_blog/django_blog/
内のファイルでした。
つまり、プロジェクト内全体のURLを設定していたという認識です。
次はアプリケーション内のURLを設定するので、django_blog/blogs/
内に新たにurls.pyファイルを作成して編集します。
from django.urls import path
from . import views
app_name = 'blogs'
urlpatterns = [
path('', views.index, name='index'),
]
#####path
関数について
第一引数で空の文字列を指定し、第二引数でviews.index
を指定しています。
これは、URL(http://127.0.0.1:8000/)にアクセスした時は、views.pyのindex関数を実行するように設定をしていることを意味します。
第三引数はURLパスに名前を付けているという事です。