개발로 자기계발
article thumbnail
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
profile

개발로 자기계발

@김잠봉

틀린부분이나 조언이 있다면 언제든 환영입니다:-)