paizaクラウドで、PythonのDjangoでWEBサイトを作る
- https://paiza.cloud/containersにアクセスして、サインアップする。メール登録して、メールからログインすればパイザクラウドのアカウントが作成できる。
- ターミナルを開く
- django-admin startproject django_website
と入力して、django_website(任意)という新規プロジェクトを作る
- django-admin startproject django_website
- pwdで今のパスを表示できる。
- cd django_websited
cdはchange directory(ディレクトリの変更)という意味。さっき作ったプロジェクトに移動する。 - pwd
今のパスを確認する。以下でOK。
「/home/ubuntu/django_website」 - python manage.py runserver
開発用サーバーを立ち上げる。

django_websiteフォルダが2つある。下の階層のdjango_websiteも、上の階層のプロジェクト名フォルダと同じ名前だが、これは特殊なフォルダ。
setting.pyは、プロジェクト管理用のデフォルトでコマンドが入っているファイル。これから、コマンドを使っていく。

左サイドバーの地球儀8000マークを押すと、黄色い画面になる。この画面が出れば、サーバーはもう立ち上がっている状態になる。
この黄色い画面は、djangoのエラー発生時に出るエラー画面。エラー内容は、「DisallowedHost at /」このURLにアクセスするのはNGですよと言われている。 - 「django_website/settings.py」を開くと、28行目に、ALLOWED_HOSTS = []があるので、ALLOWED_HOSTS = [“*"]に変更。
セキュリティは無視して、どんなURLでもアクセスできる設定になる。これで、「DisallowedHost at/」のエラーが消える。 - Ctrl+C
開発サーバーを停止させる。
サーバーを停止させずに、ターミナルをもう一つ起動させてもいい。 - python manage.py startapp website
「website」というアプリを作る。2個目のアプリを作りたければ、「python manage.py startapp website2」みたいにすればOK。アプリが不要なら、作ったアプリのフォルダを丸ごと削除すればOK
djangoでwebページを作成するには、最低1つ「アプリ」というものを作る必要がある。基本、複雑プロジェクトでなければ1プロジェクト1つだけのアプリが一般的。 - INSTALLED_APPS = [
'django.contrib.admin’,
'django.contrib.auth’,
'django.contrib.contenttypes’,
'django.contrib.sessions’,
'django.contrib.messages’,
'django.contrib.staticfiles’,
'website’,
]
アプリの名前(website)を追加する。シングルクォーテーションでも、ダブルクォーテーションでもどちらもOK。パイソンではどっちを使っても問題ない。プロジェクトと、アプリがあるが、プロジェクトは全体設定の時しか設定しない。基本的にアプリの方しか変更しない。 - アプリ(website)>templatesディレクトリを新規作成。
- templates>index.htmlを新規作成。index.htmlにhtmlを書く。<h1>Hello world</h1>
- website>view.pyに全行削除した後、「from django.views.generic import TemplateView」を記載。
Djangoの方でデフォルトで用意しているビュー。TemplateViewは、htmlをユーザーに返す為の「ビュー」を追加している。 - website>view.pyに「class IndexView(TemplateView):」を追記。
IndexVewというクラスを新規作成する。その際、TemplateViewを継承する。 - template_name="index.html"も追記。
これは、index.htmlが、ユーザーが見る為のビューを作成している。 - website>urls.pyを新規作成
- from django.urls import path
from .views import IndexView
を追加する。「.views」の「.」は、今のフォルダの階層のviews.pyファイルの、IndexViewクラスをインポートしている。

- urlpatterns = [
path(",IndexView.as_view(),)
]
を追記する。これは、"は、トップページにアクセスした時という意味。トップページにアクセスしたら、IndexViewを表示する。IndexViewは、views.pyで「index.html」を表示するように先ほど設定をしたので、index.htmlが表示される。 - django_website>urls.pyに以下を記載。
from django.contrib import admin
from django.urls import path,includeurlpatterns = [
path('admin/’, admin.site.urls),
path(",include('website.urls’))
]
これは、トップページにアクセスされたら、- websiteディレクトリのurls.pyを見に行けと指示。
- 今度、website>url.pyでは、トップページにアクセスされたら、views.pyのIndexViewクラスで「index.html」を見に行けと指示。
- website>templates>index.htmlを表示。
urls.pyは、該当のURLにアクセスがきたら、どのページを表示させるかを振り分けている。
teplatesフォルダには、HTMLファイルを置く。
views.pyには、templatesフォルダからHTMLを読み込んでユーザーに表示させる。

ディスカッション
コメント一覧
まだ、コメントがありません