あるフリーランスエンジニアの色んなメモ!! ITスキル・ライフハックとか

Django:urls.py(URLconf)の設定例

Django 1.x系

mysite/myapp/urls.py

from django.conf.urls import url
from django.contrib.auth import views as django_views
from django.contrib.auth.decorators import login_required

from . import views


app_name = 'my_app'

urlpatterns = [
    # ログイン
    url(
            r'^login/',
            django_views.LoginView.as_view(),
            name='login'
    ),

    # ログアウト
    url(
            r'^logout/',
            django_views.LogoutView.as_view(next_page=app_name + ':login'),
            name='logout'
    ),

    # ログインが必要なView
    url(
            r'^my_page/',
            login_required(views.MyView.as_view()),
            name='my_page'
    ),

]

mysite/mysite/urls.py

from django.conf.urls import include, url

from mysite.myapp import urls as myapp_urls


urlpatterns = [
    url(r'^myapp/', include(myapp_urls)),
]

mysite/mysite/settings.py

ログイン用URLパスを指定しておく必要がある

# path指定する場合
LOGIN_URL = '/myapp/login/'
# name指定する場合
LOGIN_URL = 'my_app:login'

Django 2.x系

mysite/myapp/urls.py

Django 1.x系との違い

  • path設定に通常のstrを使用する場合 → path を使用
  • path設定に正規表現を使用する場合 → re_path を使用
from django.contrib.auth import views as django_views
from django.contrib.auth.decorators import login_required
from django.urls import path, re_path

from . import views


app_name = 'my_app'

urlpatterns = [
    # ログイン
    path(
            'login/',
            django_views.LoginView.as_view(),
            name='login'
    ),

    # ログアウト(正規表現を使用したpath設定)
    re_path(
            r'^logout/',
            django_views.LogoutView.as_view(next_page=app_name + ':login'),
            name='logout'
    ),

    # ログインが必要なView
    path(
            'my_page/',
            login_required(views.MyView.as_view()),
            name='my_page'
    ),

]

mysite/mysite/urls.py

from django.urls import include, path


urlpatterns = [
    path('myapp/', include('mysite.myapp.urls')),
]

mysite/mysite/settings.py

Django 1.x系と同様に、ログイン用URLパスを指定しておく必要がある

# path指定する場合
LOGIN_URL = '/myapp/login/'
# name指定する場合
LOGIN_URL = 'my_app:login'
comments powered by Disqus