Closed9

Djangoのチュートリアルをなぞってみる その2:ブラウザ表示まで

suzuki-navisuzuki-navi

前回django-admin startprojectコマンドで作ったものはproject。次はその中にappを作る。projectの中に複数のappが存在しうる。

suzuki-navisuzuki-navi

appを作るにはmanage.pyを使う。

$ python manage.py startapp polls

pollsディレクトリが生成された。

$ tree polls
polls
├── admin.py
├── apps.py
├── __init__.py
├── migrations
│   └── __init__.py
├── models.py
├── tests.py
└── views.py

1 directory, 7 files
suzuki-navisuzuki-navi

作成されたPythonファイルはほとんどが数行だけの中身のないファイル。唯一コードが含まれるのが以下のファイル。

from django.apps import AppConfig


class PollsConfig(AppConfig):
    default_auto_field = 'django.db.models.BigAutoField'
    name = 'polls'
suzuki-navisuzuki-navi

チュートリアルに従ってファイルを編集する。差分は次の通り。 polls/urls.py を新規作成し、mysite/urls.pyから参照させるようにしている。polls/views.pyにはメソッドを追加している。

diff --git a/mysite/mysite/urls.py b/mysite/mysite/urls.py
index 79d5460..39d844c 100644
--- a/mysite/mysite/urls.py
+++ b/mysite/mysite/urls.py
@@ -15,8 +15,9 @@ Including another URLconf
     2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
 """
 from django.contrib import admin
-from django.urls import path
+from django.urls import include, path

 urlpatterns = [
+    path("polls/", include("polls.urls")),
     path('admin/', admin.site.urls),
 ]
diff --git a/mysite/polls/urls.py b/mysite/polls/urls.py
new file mode 100644
index 0000000..5119061
--- /dev/null
+++ b/mysite/polls/urls.py
@@ -0,0 +1,7 @@
+from django.urls import path
+
+from . import views
+
+urlpatterns = [
+    path("", views.index, name="index"),
+]
diff --git a/mysite/polls/views.py b/mysite/polls/views.py
index 91ea44a..963b6f7 100644
--- a/mysite/polls/views.py
+++ b/mysite/polls/views.py
@@ -1,3 +1,5 @@
-from django.shortcuts import render
+from django.http import HttpResponse

-# Create your views here.
+
+def index(request):
+    return HttpResponse("Hello, world. You're at the polls index.")
suzuki-navisuzuki-navi

python manage.py runserverコマンドは次のようにポート番号を付ければポート番号を変更できる。

$ python manage.py runserver 8080
suzuki-navisuzuki-navi

http://localhost:8080/polls/ にブラウザでアクセスすると Hello, world. You're at the polls index. と表示される。

$ curl http://localhost:8080/polls/
Hello, world. You're at the polls index.
suzuki-navisuzuki-navi

ちなみに http://localhost:8080/admin/ にアクセスすると、ログイン画面になる。

suzuki-navisuzuki-navi

urls.pyにある path("", views.index, name="index"), について

Naming your URL lets you refer to it unambiguously from elsewhere in Django, especially from within templates.

このスクラップは2023/08/05にクローズされました