http://conansjh20.pythonanywhere.com/lottopage/

 

로또 당첨번호 확인

로또 당첨 번호 확인

conansjh20.pythonanywhere.com

위의 홈페이지를 만들기 위한 모든 과정을 하나하나 포스팅 하도록 하겠습니다.

 

이제 앱안의 views.py에 lottoresult함수를 작성합니다.

1
2
def lottoresult(self):
    inputLotto = str(self.POST['inputVal'])
cs

두번째 줄은 앞선 포스트에서 말했듯이 post라는 방법으로 입력한 text inputValue라는 이름으로 lottoresult 경로로 넘겨진 값을 다시한번 inputLotto라는 변수명으로 정의하는 과정입니다. str()은 다시 문자열로 만드려고 넣었는데 안넣어도 되는지 안되는지 잘 모르겠네요. 일단 넣고 보는 걸로...

1
    result_all = lotto(inputLotto)
cs

그리고 그 inputLotto를 드디어 우리가 만든 lotto라는 함수로 돌려 그 값을 result_all 로 정의하는 구문입니다.

 

result_all은 lotto.py의 lotto함수의 결과로 iterable한 생성자(generator)입니다. 그렇기 때문에 그 자체로는 값을 갖지 않습니다.

1
2
3
4
5
6
    this_time = next(result_all)
    this_date = next(result_all)
    win_numbers = next(result_all)
    bonus_number = next(result_all)
    my_numbers = next(result_all)
    my_rank = next(result_all)
cs

그래서 next기능을 통해 순차적으로 값을 뽑아냅니다. 총 6개 값이 나오고 순서대로

 

  • 이번 회차
  • 이번 회차 발표 날짜
  • 1등 당첨 번호
  • 보너스 당첨번호
  • 내가 입력한 번호
  • 최종 등수

로 각각 값을 변수로 정의해 놓습니다.

 

그리고 이러한 값들은 실제 html 파일로 보낼때는 context라는 튜플 안에 넣어 보내야 하기 때문에 다음과 같이 context를 정의합니다.

1
2
3
4
5
6
7
8
9
    context = {
        'tt' : this_time,
        'td' : this_date,
        'wns' : win_numbers,
        'bon' : bonus_number,
        'mns' : my_numbers,
        'mr' : my_rank,
    }
    return render(self, 'lotto/lottoresult.html', context)
cs

그리고 위의 마지막 열과 같이 lottoresult.html 파일로 context를 보내면 됩니다. 튜플의 앞에 key는 내가 새로 이름을 정의하고 value값은 앞서 각 결과 값을 의미합니다.

 

이제 lottoresult.html 파일을 만들면 됩니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
{% extends 'lotto/base.html' %}
{% load static %}
{% block content %}
    <div class="center">
    <div id="box1"><h2> 로또 당첨 번호 확인 </h2></div>
    <div id="box1">
    <form action="{% url 'lottoresult' %}" method = "post">
    {% csrf_token %}
    <input placeholder="당첨번호를 입력하세요. (예: 1 11 21 31 41 45)" type="text" name="inputVal"/>
    <button type="submit" class="button button1"> 
    확인
    </button>
    </div>
        <div id="box1" class="row">
                <h4>
                제 {{ tt }}회
                </h4>
                <h4>
                날짜 : {{ td }}
                </h4>
                <h4>
                당첨 번호 : {{ wns }}
                </h4>
                <h4>
                보너스 번호 : {{ bon }}
                </h4>
                <h4>
                내 번호 : {{ mns }}
                </h4>
                <h4>
                등수 : {{ mr }}
                </h4>
                <h4>
                반드시 회차 및 날짜와 내가 입력한 번호를 다시 한번 확인하세요.
                </h4>
        </div>
    </p>
    <div id="box2">
    conansjh20@naver.com <br>
    <a href="https://conansjh20.tistory.com/" target="_blank">티스토리 블로그</a>
    </div>
    </div>
{% endblock %}
cs

앞서 base.html 파일을 통해 <head> 부분은 전부 하나의 틀을 사용하고 body 부분만 보여줍니다. 사실 대단할 것 없이 앞서 context 튜플안에 저장한 각 값들을 표시할때 {{    key값   }}을 입력하면 html에서는 value값이 표시됩니다.

 

이제 드디어 내 컴퓨터 안에서 홈페이지 작성은 완성입니다.

 

이제 명령 프롬프트에서 venv/Scripts/ 경로의 activate로 가상환경을 열고 python manage.py runserver로 서버를 구동한 뒤 http://127.0.0.1:8000/ 로 들어가보면,

 

lottopage.html 화면
결과 화면. 위에 다시 번호입력창을 넣었습니다.

지난주 1등 당첨번호를 입력했는데 이번주엔 3개도 맞지 않았네요.

그리고 결과 숫자를 정규 표현식(regex)를 이용하여 대괄호나 컴마도 없앨 수 있었는데 귀찮네요.ㅠㅠ

 

이제 다음 포스트는 실제 인터넷 pythonanywhere 호스팅에 업로드하여 홈페이지를 배포토록 하겠습니다.

+ Recent posts