[Django] URL 변수화
url의 변수화하는 이유는 app에 따라 urls.py를 생성한다. 이떄 url이 중복 되는 경우가 발생할 수 도 있다. 따라서 app_name을 지정하고 각각의 path에 name을 지정함으로 이러한 문제를 방지한다.
url이 복잡해 질 수 있다. 따라서 아래의 urls.py와 같이 변수화를 진행한다.
from django.urls import path
from . import views
app_name = 'posts'
urlpatterns = [
path('', views.index, name='index'),
path('create/', views.create, name='create'),
path('<int:pk>/', views.detail, name='detail'),
path('<int:pk>/delete/', views.delete, name='delete'),
path('<int:pk>/update/', views.update, name='update'),
path('<int:pk>/comments/', views.comments_create, name='comments_create'),
]
app_name = 'posts'
이부분은 app이름으로 변수화를 시켜준다. app_name을 변수화 해주면 아래의 urlpattern부분의 name이 다른 app과 중복되더라도 오류가 발생하지 않는다.
예시
<a href="{% url 'posts:index' %}">
<a href="{% url 'posts:delete' article.pk %}"> - 만약 pk값이 여러개라면 순서에 맞에 article.pk뒤에 적어주면된다.
redirect(f'/articles/{ article.pk }')
redirect{'articles:detail', article.pk} - app이름을 적고 값을 적어주면된다.