Djangoのルーティングを試してみる

準備

CentOS8を起動。

Vagrantfile

Vagrant.configure("2") do |config|
  config.vm.box = "bento/centos-8.3"
  config.vm.network "forwarded_port", guest: 8000, host: 8000
  config.vm.synced_folder ".", "/vagrant", type:"virtualbox"
end
> vagrant up
> vagrant ssh

PythonDjangoをインストール。

$ sudo dnf install -y python38
$ sudo pip3 install django

Djangoのプロジェクトを作成。

$ cd /vagrant
$ django-admin startproject hoge

アプリケーションを作成。

$ cd hoge
$ python3 manage.py startapp hoge_app

$ vi hoge_app/settings.py
・・・
INSTALLED_APPS = [
    'hoge_app.apps.HogeAppConfig',   # 追加
    'django.contrib.admin',
    'django.contrib.auth',
・・・

ルーティングの設定

urlsを設定。

$ vi hoge/urls.py
・・・
from hoge_app import views

urlpatterns = [
    path('hello', views.hello),
    path('admin/', admin.site.urls),
]

viewsに処理を記述。

$ vi hoge_app/views.py
from django.http import HttpResponse

def hello(request):
    return HttpResponse("Hello world!")

Djangoを起動すると、ブラウザから確認できる。

$ python3 manage.py runserver 0.0.0.0:8000

http://localhost:8000/hello
f:id:yk5656:20210503172657j:plain

ルーティングの設定2

下記のようにurlsを設定し、

$ vi hoge/urls.py
・・・
from django.urls import path, include

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

アプリケーション側にurlsの指定をすることもできる。(こっちのほうが一般的)

$ vi hoge_app/urls.py
from django.urls import path
from . import views

urlpatterns = [
    path('hello', views.hello),
]

Djangoを起動すると、ブラウザから確認できる。

$ python3 manage.py runserver 0.0.0.0:8000

http://localhost:8000/hello_app/hello
f:id:yk5656:20210503172712j:plain