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

※ 当サイトではアフィリエイト広告を利用しています。リンクは広告リンクも含みます。

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

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

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

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

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

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

広告

開発環境

クイックインストールガイドを参考にGoogle Cplaboratoryで以下のようにやってみました。

!pip install Django
import django
print(django.get_version())
4.2.2
インストールされてることは確認できます。しかし
django-admin startproject mysiteでエラーになります。

ということで、ただPythonが使える環境ではDjangoは使えません。仮想環境が必要になります。
クイックインストールガイドにWindows での Django のインストール方法があります。(私はやっていません。)ではpy -m venv project-nameで仮想環境を作ってからDjangoをインストールしてます。ただ、そのままチュートリアルに、そってやるよりDjango開発環境でググったほうがいいです。
どの開発環境でもdjango-admin startproject mysiteからは同じ手順になります。
私は現在、この環境です。

ストレージ容量の少ないパソコン(32G)のころは、webのインストール済みの環境(PaizaCloud)を使ってました。そのころ書いた記事なのでPaizaCloud中心に説明していますが、基本的に他の環境でも同じです。

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

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

各サンプルコードの右上に
Linux/アップルとWindowsが切り替えられるようになってます。
PaizaCloudは🐧マーク(Linux)のほうです。Windowsでも仮想環境の場合が、ほとんどなので🐧マーク(Linux)のほうです。私も現在Windowsですが、py manage~でやったらエラーになります。

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

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

django-admin startproject mysite でEnter(以下Enterは省略)
cd mysite ディレクトリが移動されます。
(以降エラーになるとき、ディレクトリがルートに戻っていることがあるので、
cd mysiteで必ず移動してから実行してください。)
コードはどこに置くの?で重要な点は
django-admin startproject mysiteを、どのディレクトリで実行したかという点です。
testというディレクトリでdjango-admin startproject mysiteを実行したら以下のディレクトリ構成になります。
test/←ここでdjango-admin startproject mysite
  mysite/←cd mysiteでここへ移動
    manage.py
    mysite/
        __init__.py
        settings.py
        urls.py
        asgi.py
        wsgi.py
mysiteにいることでpython manage.py runserverでmanage.pyを実行できることになります。
python manage.py runserverを実行して http://127.0.0.1:8000/にブラウザでアクセスするとDjangoの画面が表示されます。

ポート番号の変更は、まずやることがないので気にしなくていいです。
ポートとは、urlで割り当てられた場所というのは一つですが、それをさらに細かく分割した場所がportというイメージです。

runserver の自動リロードは、実際、この先使っていると経験します。コードを変更して保存すると勝手に更新してくれる機能です。

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

はじめてのビュー作成

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

ローカル環境では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を実行して
PaizaCloudの場合、左の8000と書いてある地球のアイコンをクリックするとアクセスできます。
ローカル環境はhttp://127.0.0.1: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から「キャプチャされた」値を呼び出します。

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

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

もうちょっとわかりやすくするために
views.pyを修正してブラウザのアドレスバーにurlパラメータを追加して実験してみます。
ローカル環境の場合http://127.0.0.1:8000/polls/?test=送れた!
PaizaCloudの場合も未確認ですが末尾に?test=送れた!で行けると思います。
URLパラメータとは、URLに付け加える変数のことで、サーバーに情報を送るために使用されます。URLの末尾に「?」を付け、その後に「変数名=値」の形式でデータを送信します。

views.pyの中身を以下に変えて、
from django.http import HttpResponse

def index(request):
    a=request.GET['test']#requestの中の変数testの中身をget
    return HttpResponse("Hello, world. You're at the polls index."+a)
http://127.0.0.1:8000/polls/?test=送れた!
にアクセスしてみてください。urlパラメータで渡された値を表示する処理です。
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サイト・アプリを作成するまでの一連の流れ
続きはこちらになります。

目次へ

この記事を書いたイチゲを応援する(質問でもokです)
Vプリカでのお支払いがおすすめです。
MENTAやってます(ichige)


コメント

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