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'