728x90
간단하게 HTML 태그를 넣어서 HttpResponse가 가능하다.
1) formating을 통해 <h1></h1>를 넣어준다.
def monthly_challenge(request, month):
response = monthly_case.get(month)
response_data = f"<h1>{response}</h1>"
if response:
return HttpResponse(response_data)
return HttpResponseNotFound(f"<h1>Not month</h1>")
h1는 제목 태그로 텍스트를 제목 형식으로 변경해 준다.
기존의 받은 데이터가 크기가 커지고 굵어진 것을 볼 수 있다.
2) 새롭게 index 함수를 생성한다.
def index(request):
response_data = """
<ul>
<li>
<a href="/challenges/january">
January
</a>
</li>
</ul>
"""
return HttpResponse()
각 달의 리스트를 위한 HTML을 구성했고 하지만, url이 하드코딩으로 박혀있다.
이런 경우는 모든 달을 일일이 넣어줘야 하는 경우가 생긴다.
3) 하드 코딩 부분을 수정해보자.
def index(request):
list_items = ""
monthly_case_key = list(monthly_case.keys())
for month in monthly_case_key:
capitalized_month = month.capitalize()
redirect_path = reverse("month-challenge", args=[month])
list_items += f"<li><a href='{redirect_path}'>{capitalized_month}</a></li>"
response_data = f"<ul>{list_items}</ul>"
return HttpResponse(response_data)
capitalize는 첫 글자만 대문자로 변환하는 함수이다.
redirect_path는 month-challenge를 name으로 가진 url로 args에 [month]에 들어가는 url을 들고 온다.
list_items는 HTML형식에 맞게 모든 달이 붙여진다.
마지막으로 리스트 형식으로 모든 달의 url을 호출한다.
4) challenges 폴더의 urls.py를 수정한다.
urlpatterns = [
path("", views.index),
path("<int:month>", views.monthly_challenge_by_number),
path("<str:month>", views.monthly_challenge, name="month-challenge")
]
5) 화면을 확인했을 때 링크가 걸려 잘 나오는 것을 확인할 수 있다.
http://127.0.0.1:8000/challenges/
728x90
SMALL
'Develop > Django' 카테고리의 다른 글
Django 프로젝트를 위한 Docker 환경 구성 가이드 (0) | 2023.04.16 |
---|---|
Django (페이징 뷰) 검색 페이지 기능 구현하기 (0) | 2023.03.24 |
Django URL reverse / URL name - 7 (0) | 2023.02.27 |
Django 리다이렉트(Redirect) - 6 (0) | 2023.02.26 |
Django 동적 URL 패턴 로직 추가- 5 (0) | 2023.02.26 |