Django公式チュートリアルをインストールしない開発環境(PaizaCloud)で無料で勉強する方法「はじめての Django アプリ作成、その1」

この記事は約6分で読めます。
広告

開発環境はパソコンにインストールせず
インストール済みのPython、Djangoが
WEBで無料で使えるPaizaCloudを使用します。
Django公式のチュートリアルを実際に使い
分かりにくいところを補足していきます。

はじめての Django アプリ作成をやっていきます。

今回は、その1です。
ここではユーザーがアプリにアクセスしてきたら
処理して単純なメッセージを出力するまでの一連の
流れが学習できるようになっています。
データベースを使ってないので
よりシンプルで分かりやすいです。
データベースに関しては、その2から出てきます。後で記事にします。

PaizaCloudの使い方は
会員登録したらサーバー名に適当に名前つけて
Web開発でDjangoを選択→新規サーバー作成すれば使えます。

こちらの記事を参考にしてください。

広告

はじめての Django アプリ作成、その 1

チュートリアル全体ではここの前に章がありますが
概要は1番難しいので飛ばします。
クイックインストールガイドも
インストール済みの環境(PaizaCloud)を使うので飛ばします。

はじめての Django アプリ作成、その 1
を順番にPaizaCloudで実行していきます。

各サンプルコードの右上に
アップルとWindowsが切り替えられるようになってます。
py~となっているはpythonにしないとエラーになる。

チュートリアルにそって説明します。

プロジェクトを作成する
PaizaCloudの左にあるターミナルアイコンをクリックするとターミナルが立ち上がります。

django-admin startproject mysite でEnter(以下Enterは省略)
cd mysite ディレクトリが移動されます。
(以降エラーになるとき、ディレクトリがルートに戻っていることがあるので、
cd mysiteで必ず移動してから実行してください。)

py manage.py runserverはやってもいいが、まだやらないほうがいい。
多分同じ結果にならない。

Polls アプリケーションをつくる
python manage.py startapp polls
PaizaCloudで実行するときは
settings.py
ALLOWED_HOSTS = []
→ALLOWED_HOSTS = ['*']にして保存
(ファイルを変更したときは各Window左上の保存を押してください。
赤いマークが出て押せないときは保存完了している状態です)
実行できるホストをすべて許可します。
これをやらないとエラーになる。

はじめてのビュー作成

polls/views.pyは指示通り。
polls/urls.py ファイルはないので
pollsで右クリック新規ファイル作成で作ってください。
mysite/polls.urls同じようなプログラムがすでに書かれていますが
全部消してから貼り付けてください。

「デフォルトでは runserver コマンドは内部 IP のポート 8000 で起動します。」とありますがこれは。

ローカル環境ではhttp://127.0.0.1:8000/が大元のアドレスになります。
PaizaCloudはhttps://localhost-個人別の名前.paiza-user-free.cloud:8000/が大元となります。

mysite/urls.pyの
path(''がURLの大元の位置を表している。
path('polls/'にすることで
ローカル環境ではhttp://127.0.0.1:8000/polls/
PaizaCloudではhttps://localhost-個人別の名前.paiza-user-free.cloud:8000/polls/を表しています。

urls.pyは後で出てきますが全部で2つありますので注意してください。

python manage.py runserverを実行して
左の8000と書いてある地球のアイコンをクリックするとアクセスできます。
最初Page not found (404)が出ます。
アドレスバーの最後にpolls/を付ければ
Hello, world. You're at the polls index.と表示すれば成功です。

説明で出てくるURLconfって何?こちらが分かりやすいです。

【Django入門】urls.py(URLConf)の役割と使い方

目次へ

ここがポイント

今回の一連の流れを図にしました。

ややこしいのがパッケージのurls.pyのpolls①、②は名前は同じです。
urlpatterns = [
    path('①polls/', include('②polls.urls')),
しかしまったく無関係です。
①のpollsだけをtestとか適当な名前に変えると、
そのtestにアクセスしたらちゃんと動くので実験してみてください。

2つのurls.pyで出てくるpath() 関数の説明です。

path('', views.index, name='index'),
関数解説
path(route,view,name)

path() 引数: route
route は URL パターンを含む文字列です。リクエストを処理するとき、Django は urlpatterns のはじめのパターンから開始し、リストを順に下に見ていきます。要求された URL を一致するものを見つけるまで各パターンと比較します。

path() 引数: view¶
Django がマッチする正規表現を見つけると、 Django は指定されたビュー関数を呼び出します。その際は HttpRequest オブジェクトを第一引数に、そしてキーワード引数としてrouteから「キャプチャされた」値を呼び出します。その3で出てくる。

サーバーにユーザーから送られてきたリクエストHttpRequest オブジェク)がviews.indexに渡され
return HttpResponseでユーザーに返答してる。
今回ユーザーから送られてきたリクエストの中身は何も見ないで
返答のみ行ってる。

def index(request):
    return HttpResponse("Hello, world. You're at the polls index.")


path() 引数: name
URL に名前付けをしておけば Django のどこからでも明確に参照でき、
とくにテンプレートの中で有効です。

path('', views.index, name='index'),この場合''と空欄だが、ここへ来る前mysite/urls.pyで'polls/'とされているので'polls/'をindexと名付けてる。

こちらのサイトも分かりやすいです。
【django】Webサイト・アプリを作成するまでの一連の流れ
続きはこちらになります。

目次へ
MENTAやってます(ichige)


コメント

タイトルとURLをコピーしました