開発環境はパソコンにインストールせずインストール済みの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)
コメント