2urls.pyとtemplatesの作成。HttpResponse(“Hello World!”)

 

Djangoを使ってHello Worldを表示させることを目標にします。

ファイル、フォルダがたくさんでてきます。

参考サイトを大いに参考にしてくださいね。

Heroku | Application Error
Django入門編1: Djangoの基本を理解しようのチャプター一覧
PythonのWebアプリケーションフレームワークである、Djangoについて学習します。Djangoを使って、Web掲示板の基本的な機能を順番に作っていくことで、本格的なWebアプリケーション開発の第1歩を体験しましょう。 |環境構築不要...

pythonのフレームワーク、Djangoの構造

フレームワークとは、電子炊飯器のようなもので、便利にご飯が炊ける、便利にプログラミングができるしくみです。効率よくアプリケーションwebサイトをつくるためにつくられました。

 

Djangoの構造はどうなっているのでしょうか。

調べてみたところ

 

urls.py : ユーザーの操作(リクエスト)を最初に受け取る(処理する)ファイル

models.py : データベースとやりとりするファイル

templatesフォルダ : ユーザーのリスエクトに対してデーターベースの情報を書き込むhtmlファイルを集めたフォルダ

views.py : urls.pyとmodels.pyとtemplatesをつなぐファイル(urls.pyから受け取ったリクエストに対して適切なデータをmodels.pyからもらい、urls.pyのリクエストに対して適切なtemplatesに入れ込む)

 

urls.pyはリクエスト窓口の係員。

views.pyは本部(文書に何を書くか決める)。

models.pyはデータ保管室の管理人。

 

view.pyは、templatesフォルダ内にあるどのhtml文書が適切か選んで使います。

 

 

①ユーザーがURLをリクエストする。

②URLで指定されたプロジェクト内のurls.py(1階の総合案内)が起動して、プロジェクト内のアプリケーション内にある各部署の窓口(urls.py)を叩き起こす。

プロジェクト>プロジェクト>urls.py ←この人が各部署の窓口を叩き起こす。

③指定されたURLでview.pyに書かれたどの関数を起動するか決める。

プロジェクト>アプリケーション>urls.py ←  この人(各部署の窓口)が関数(文書ではない)を指定する。

 

この記事ではここまでです。次の記事で

④アプリフォルダ内のviews.pyでtemplatesフォルダの中にある文書(HTML)を指定する。

プロジェクトフォルダ>アプリケーションフォルダ>view.py ←この人がユーザーにリスポンスするHTML文書を指定する。

ところまでやります。

プロジェクトフォルダ>アプリフォルダ内にフォルダとファイルをつくる。

フォルダを2つ。(アプリ名をつけたフォルダの中にtemplatesフォルダをつくり、さらにその中にアプリ名をつけたフォルダを再び作る)

ファイルを1つ。(アプリ名>templates>アプリ名のなかにhtmlファイルをつくる)

手動で作って構いません。

全部で3つです。

 

プロジェクト>プロジェクト>urls.py(URLconfとも呼ばれる)を書き換える

プロジェクトで使うアプリケーションを全て書き込んで、プロジェクトが立ち上がった時に全てのアプリケーションのurls.pyが実行されるようにします。

tryprojectフォルダ内にあるurls.pyを書き換えるようです。

urls.pyの役割は「リクエスト」に対して適切な「リスポンス」をするファイルに情報を渡すことです。

 

コピペだけでなく、自分がつけたアプリケーション名を変更するのを忘れずに。(私の場合はtryapp)

 

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
path('admin/', admin.site.urls),
path('', include('tryapp.urls'))
]

path(”, include(‘tryapp.urls’))”  “の中身がないのは

http://127.0.0.1:8000/にアクセスしたらとにかく全部tryapp/urls.pyを実行させる

ことを表しています。(何が起きたらアプリを実行するかによって’’の中にアプリフォルダを書き入れます)

path(‘tryapp/’, include(‘tryapp.urls’))と書くと

http://127.0.0.1:8000/tryapp/にアクセスしたらtryapp/urls.pyが実行されます。

 

こちらの記事も参考に。

Djangoでincludeを用いて、各アプリケーションに対してURLマッピングをする方法 - Tech Life
1つのアプリケーションに対してURLマッピングする方法 前回の記事でDjangoプロジェクトのURLマッピングについて説明した。 この記事では、include(django.urls.include)を用いて、各アプリケ …

 

できましたか?

では

 

試しにサーバーを動かしてみましょう。

$ python3 manage.py runserver

わくわくエラー!

No module named 'tryApp.urls'

はい、アプリケーションフォルダ内にurls.pyファイルをつくりましょう。

プロジェクト>アプリケーション>urls.py(URLconfとも呼ばれる)を作って書き加える。

とあるURLをリクエストされたら、view.pyに書かれた関数のうちどれを実行するのか指定します。

最初からつくってくれたらいいのに・・と思いながら。

手動で作りました。

 

アプリケーションフォルダ内にurls.pyファイルを手動で作るようです。

中身はこちら。

from django.urls import path
from . import views

app_name='tryapp'

urlpatterns = [
path('tryapp/', views.firstfunction, name='firstfunction'),
]
 

path(‘tryapp/’, views.firstfunction)というコマンドで

tryapp/をリクエストされたらviews.pyで定義された関数firstfunction を実行させているそうです。

 

nameを書かなくても実行できました。なんでしょうこれ?

URL のリバースを処理するためには、上述の例で行ったように 名前をつけられた URL パターン を使う必要があります。URL 名として使う文字列には、どんな文字でも含めることができます。Python の有効な名前に制限を受けません。

URL ディスパッチャ | Django ドキュメント
The web framework for perfectionists with deadlines.

使い方がよくわかりません。

 

プロジェクトフォルダ>アプリケーションフォルダ>view.pyを書き換える。

アプリケーションが読み込まれたら実行する関数をview.pyで定義します。

 

tryappフォルダの中にあるview.pyを開きます。

ん?ないですか?

手動でつくってもよいし、

コマンドで

touch プロジェクト名前/views.py

と打ち込んで作ってもらってもかまわないそうです。

【Python Django】初心者プログラマーのWebアプリ - Qiita
人工知能○ Webアプリ情報X のPythonPythonのWebアプリケーションフレームワーク「Django」の初心者プログラマー用のwebアプリ作成チュートリアルです。人工知能、ディープラー…

を参考にして書き換えて見ましょう。

 

view.pyのコードは以下のよう。

from django.shortcuts import render
from django.http import HttpResponse

def firstfunction(request):
return HttpResponse("Hello World!")

HttpResponseはDjangoのメソッドです。

imprtしなかったらコンソールに

NameError: name 'HttpResponse' is not defined

と表示されます。

まらブラウザで表示させても

とでてきます。

プロジェクト>プロジェクト>setting.pyにコードを加えてアプリフォルダを認識させる

プロジェクトファイルの中にあるプロジェクトファイルの何あるsetting.pyの中身を変えます。

アプリフォルダを紐づける?役割があるそうです。

「このプロジェクトにはこれらアプロケーションをつかいますよ」とコンピューターに教えている模様。

 

 

(tryprojectフォルダ内にあるurls.py でアプリとそのurls.pyを指定しただけじゃだめ?)

INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'アプリ名.apps.アプリ名Config'
]

アプリ名をtryappにしたなら

‘tryapp.apps.TryappConfig’ です。

大文字にする箇所があります。

 

 

もう一度実行

では。

改めて。

python3 manage.py runserver

 

わくわく

No such file or directory

コンピューターは反応返してくれるところがやさしいよね。

$ cd /Users/otonone/Desktop/python_lesson/Django/tryproject
$ python3 manage.py runserver

いけたかな?

 

ブラウザで

http://localhost:8000/tryApp/

想いは届かない。

あ、tryAppで大文字を使ったのがいけなかったのかとおもって全て書き直す。

 

そして

python3 manage.py runserver

結果

Django version 3.1.7, using settings 'tryDjango.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

 

やったぜ

さっそくhttp://127.0.0.1:8000/にアクセスすると

 

うーん。

エラーメッセージの意味はわからないのですが、

【Python Django】初心者プログラマーのWebアプリ - Qiita
人工知能○ Webアプリ情報X のPythonPythonのWebアプリケーションフレームワーク「Django」の初心者プログラマー用のwebアプリ作成チュートリアルです。人工知能、ディープラー…

にある通り、

http://127.0.0.1:8000/tryapp/

にアクセスします。

でた!!!

書き換えます。

サーバーにつなぎ直さなくても、view.pyを書き換えてブラウザを再度読み込みさせれば更新されました。

 

できたーーーーー!!!!!!

 

で、templates内のhtmlファイルを消しても実行できます。

意味がわかりません。

 

 

コメント