http://conansjh20.pythonanywhere.com/lottopage/
위의 홈페이지를 만들기 위한 모든 과정을 하나하나 포스팅 하도록 하겠습니다.
이제 앱안의 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/ 로 들어가보면,
지난주 1등 당첨번호를 입력했는데 이번주엔 3개도 맞지 않았네요.
그리고 결과 숫자를 정규 표현식(regex)를 이용하여 대괄호나 컴마도 없앨 수 있었는데 귀찮네요.ㅠㅠ
이제 다음 포스트는 실제 인터넷 pythonanywhere 호스팅에 업로드하여 홈페이지를 배포토록 하겠습니다.