https://www.youtube.com/watch?v=SZgcwhLTK_k&list=PLEsfXFp6DpzRMby_cSoWTFw8zaMdTEXgL&index=19
urlpatterns = [
path("", home_view), #index/home/root
path('articles/<int:id>/', home_view),
path('admin/', admin.site.urls),
]
urls.py 함수에 위와 같이 articles에 대한 패스를 추가했다.
<int: id>로 올 수 있는 타입을 알려준다.
def home_view(request, *args, **kwargs):
print(args, kwargs)
그리고 *args, **kwargs로 위에서 넘겨준 int에 대한 인자를 받는다.
밑에가 출력.
() {'id': 4}
??? 근데 *arg, **kwargs는 파이썬 문법상 어떻게 표현된 거지?
요약하면 동적 라우팅은 urls.py 파일에서 urlpatterns에 다음과 같이 추가할 수 있는데, 이때 파라미터를 넘길 수 가 있다.
urlpatterns = [
path("", home_view), #index/home/root
path('articles/<int:id>/', views.article_detail_view),
#re_path(r'articles/(?P<id>\d+)$', home_view), #regular expression
path('admin/', admin.site.urls),
]
파라미터를 받도록 설정해준다면 view에서도 마찬가지로 파라미터를 받아야한다.
# Create your views here.
def article_detail_view(request, id=None):
article_obj = None
if id is not None:
article_obj = Article.objects.get(id=id)
context = {
"object": None,
}
return render(request, "articles/detail.html", context={})
id를 받는 형태다.
render(request, "articles/detail.html", context={})로 html을 랜더링한다.
아래가 detail.html 파일이다.
{% extends "base.html" %}
{% block content %}
<h1>{{ object.title }}</h1>
<p>{{ object.content }}</p>
{% endblock content %}
'백엔드' 카테고리의 다른 글
<장고 Django> Register Model in the Admin, 어드민 페이지에 모델 추가하기. (0) | 2022.05.17 |
---|---|
<장고> Super Users, Staff Users & the Django Admin (0) | 2022.05.17 |
<장고 Django> 장고 강의 추천3, 18강 뷰에서 데이터를 리스트로 표현하기 (0) | 2022.05.16 |
<장고 django> 초보자 장고 강의 추천, 장고 뷰 템플릿 사용, 장고 데이터베이스인 모델 사용하기, 장고 app 추가로 만들기 (0) | 2022.05.16 |
<django 공부> django 장고 강의 추천 (0) | 2022.05.16 |