{% load static %}
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>로또 번호 출력 페이지</title>
<link rel="stylesheet" type="text/css" href="{% static 'first/style.css' %}" />
</head>
<body>
{% block content %}
{% endblock %}
</body>
</html>
▶ block : 반복적으로 사용되는 html 코드를 한 곳에 모아두고 재사용 할 때 사용되는 django template
▶ body 태그 내부를 제외하고는 반복적으로 사용되기 때문에 base.html 파일에 모아두고 달라질 내용만 body 내부에 block을 명시함
{% extends 'first/base.html' %}
{% load static %}
{% block content %}
<p>Hello World!</p>
<img style="width:100px;" src="{% static 'first/image.png' %}" alt="이미지"/>
<p>{{ current_date }}</p>
<p>{{ current_date|date:"Y년 m월 d일 H시 i분 s초" }}</p>
<a href="{% url 'select' %}">시작하기!</a>
{% endblock %}
▶ {% extends 'first/base.html' %} : 어떤 파일에서 이어서 렌더링될 지 지정해줘야 하기 때문에 first 폴더 안에 있는 base.html을 선언
▶ {% load static %} : 이미지를 사용하기 위해 static을 로드
▶ {% block content %} : 블록이 시작되는 위치 선언
body{
text-align : center;
}
▶ 전체적으로 사용될 css 생성
▶ index.html 파일이 출력되는 모습
▶ <form action="{% url 'result' %}" method="get"> : form 태그를 사용해 result 페이지에서 사용자가 입력한 변수를 받을 수 있도록 함
▶ select.html 파일이 출력되는 모습
▶ chosen = request.GET['number'] : number라는 값으로 전달받은 데이터를 꺼내옴
▶ context = {'numbers' : [chosen, 2, 3, 4, 5, 6]} : 첫 데이터(chosen)를 사용자로부터 받은 데이터 값으로 넣음
{% extends 'first/base.html' %}
{% load static %}
{% block content %}
<h3>추천 번호는 다음과 같습니다.</h3>
<div style="text-align:left;"
<ul>
{% for num in numbers %}
<li>{{ num }}</li>
{% endfor %}
</ul>
{% endblock %}
▶ {% for num in numbers %} : 반복문을 이용해서 numbers에 있는 값을 차례대로 num에 담아둠
▶ <li>{{num}}</li> : num에 담겨져 있는 값을 list로 출력
import random
from django.shortcuts import render
from django.http import HttpResponse
from django.template import loader
from datetime import datetime
# Create your views here.
def index(request):
now = datetime.now()
context = {
'current_date': now
}
return render(request, 'first/index.html', context)
def select(request):
context = {}
return render(request, 'first/select.html', context)
def result(request):
chosen = int(request.GET['number'])
results = []
if chosen >= 1 and chosen <= 45:
results.append(chosen)
box=[]
for i in range(0, 45):
if chosen != i+1:
box.append(i+1)
random.shuffle(box)
while len(results) < 6:
results.append(box.pop())
context = {
'numbers': results
}
return render(request, 'first/result.html', context)
▶ if chosen >=1 and chosen <= 45: results.append(chosen) : 사용자가 선택한 값이 1 이상 45 이하에 해당하지 않으면 결과 값에 미리 선택한 수를 넣음
▶ box = [] : 값을 꺼낼 박스를 마련함
▶ random.shuffle(box) : 박스에 저장된 값을 랜덤하게 뒤섞음
▶ while len(results) < 6 : results.append(box.pop()) : results의 개수가 6개가 될 때까지 값을 하나씩 꺼냄
▶ result.html이 출력되는 모습
→ 사용자 입력값 : 1
'Django > inflearn' 카테고리의 다른 글
모델 클래스 선언 (0) | 2022.09.30 |
---|---|
Django 모델 개요 (0) | 2022.09.29 |
스태틱 파일 띄우기 (0) | 2022.09.27 |
템플릿 조건 처리 (0) | 2022.09.25 |
템플릿 기본(변수 넘기기) (2) | 2022.09.20 |