📌 Django를 이용한 구구단 웹 페이지 만들기
이번 글에서는 Django를 이용하여 간단한 구구단 웹 페이지를 만드는 과정을 코드와 함께 살펴보겠습니다.
🔹 프로젝트 구성
- urls.py: URL 요청을 처리하고, 적절한 뷰 함수를 연결합니다.
- gugu.html: Django 템플릿을 사용하여 구구단을 출력하는 페이지입니다.
🚩 urls.py 코드 설명
from django.contrib import admin
from django.urls import path
from django.shortcuts import render, redirect
# 구구단 처리 뷰 함수
def gugu(request, num):
# num 값이 2 미만이면 '/gugu/2/'로 리다이렉트
if num < 2:
return redirect('/gugu/2/')
# context에 현재 단수와 결과를 리스트 컴프리헨션으로 담아 템플릿에 전달
context = {
'dan': num,
'results': [num * i for i in range(1, 10)]
}
return render(request, 'gugu.html', context)
# 구구단 다른 방식 처리 뷰 함수
def dudu(request, num):
# 각 곱셈의 결과를 튜플로 담아 템플릿에 전달
context = {
'dudu': num,
'resultss': [(i, num * i) for i in range(1, 10)]
}
return render(request, 'gugu.html', context)
# URL 패턴 정의
urlpatterns = [
path('gugu/<int:num>/', gugu),
path('dudu/<int:num>/', dudu),
]
- 리다이렉트 처리: 사용자가 URL로 전달한 숫자가 2 미만일 경우, 구구단 2단 페이지로 자동으로 이동됩니다.
- 리스트 컴프리헨션: 구구단 결과를 한 번에 계산하여 context로 전달합니다.
🚩 gugu.html 코드 설명
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>구구단 페이지</title>
</head>
<body>
{% if dan %}
<h1>{{ dan }}단</h1>
{% for result in results %}
<p>{{ dan }} x {{ forloop.counter }} = {{ result }}</p>
{% endfor %}
{% endif %}
{% if dudu %}
<h1>{{ dudu }}단</h1>
{% for i, result in resultss %}
<p>{{ dudu }} x {{ i }} = {{ result }}</p>
{% endfor %}
{% endif %}
{# 사용하지 않는 코드 부분 주석 처리 #}
</body>
</html>
- **조건문(if)**을 사용해 dan 혹은 dudu가 존재하는 경우에만 HTML 태그를 렌더링합니다.
- forloop.counter: Django 템플릿이 제공하는 반복문의 현재 인덱스를 출력하는 변수입니다.
🚀 실제 실행 예시
- /gugu/3/으로 접속하면 3단이 출력됩니다.
- /dudu/4/로 접속하면 4단이 출력됩니다.
- /gugu/1/로 접속하면 자동으로 /gugu/2/로 리다이렉트 됩니다.
이상으로 Django를 사용하여 간단한 구구단 페이지를 만드는 과정을 살펴보았습니다. 다양한 방법으로 확장하여 활용해보세요! 😊
'프로젝트' 카테고리의 다른 글
Chapter 2-9 Django ORM 미니 프로젝트 실습: 북마크 대량 생성과 조건 필터링 (0) | 2025.04.30 |
---|---|
📚 Django 유저 리스트 & 상세 정보 프로젝트 정리 (0) | 2025.04.30 |
🚀 Flask 프로젝트 배포 이후 과정 정리 3 일차 (EC2 + Nginx + SSL + 도메인) (0) | 2025.04.27 |
FLASK 미니프로젝트 팀2-1 팀원과 검증 단계 2일차 아침 (0) | 2025.04.25 |
FLASK 미니프로젝트 팀 (초기작업)1-4 기능 정의 & 흐름 설계 가이드 (0) | 2025.04.23 |