Django/inflearn

로또 번호 출력 페이지 만들기

곽수진 2022. 9. 28. 01:38
반응형

{% 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