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

 

로또 당첨번호 확인

로또 당첨 번호 확인

conansjh20.pythonanywhere.com

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

일단 앞서 만들었던 내 로또 프로그램 lotto.py를 앱 폴더로 복사합니다.

굳이 한번더 lotto.py의 내용을 보면 다음과 같습니다.

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
44
import requests
from bs4 import BeautifulSoup
import re
 
def lotto(numbers):
    get_address = requests.get("https://www.dhlottery.co.kr/common.do?method=main"
    get_content = get_address.content 
    get_html = BeautifulSoup(get_content, "html.parser"
    get_time = get_html.find("strong",{"id":"lottoDrwNo"}).text
    get_date = get_html.find("span",{"id":"drwNoDate"}).text
    num_filter = re.compile('drwtNo.*'
    wn = [] 
    for get_num in get_html.find_all("span",{"id": num_filter}): 
        wn.append(get_num.get_text()) 
    bonus_num = get_html.find("span",{"id":"bnusNo"}).text 
    bn = bonus_num
    wn = list(wn)
    get_mynum = str.split(numbers)
 
    yield get_time
    yield get_date
 
    yield wn
    yield bn
    yield get_mynum
 
    k = 0
    for i in wn:
        if i in get_mynum:
            k = k + 1
 
    if k == 5:
        if bn in get_mynum:
            yield "2등"
        else:
            yield "3등"
    elif k == 6:
        yield "1등"
    elif k == 4:
        yield "4등"
    elif k == 3:
        yield "5등"
    else:
        yield "꽝"
cs

 

그리고 views.py 를 엽니다.

1
2
3
4
from django.shortcuts import render
from django.http import HttpResponse
from django.template import loader
from .lotto import lotto
cs

일단 3열과 4열에 위와 같이 추가로 import합니다. django의 template에 있는 html 파일을 불러오기 위한 기능과 같은 경로에 있는 lotto.py의 lottopage 함수를 불러오기 위함입니다.

 

이어서 첫 홈페이지를 열기 위한 함수를 다음과 같이 작성합니다.

1
2
3
def lottopage(self):
    context = {}
    return render(self, 'lotto/lottopage.html', context)
cs

위의 함수는 정말 아무 내용도 없이 순수한 html을 열기위한 가장 기본적인 내용이라 볼 수 있습니다.

일단 두번째 줄과 같이 context의 내용을 작성하고(위 구문에서는 내용이 없습니다.),

세번째 줄과 같은 형식으로 html파일을 context 내용과 함께 내보내는 것입니다.

templates 폴더에 lotto폴더를 만들어 그 안에 html파일을 넣었기 때문에 위에 경로를 lotto/를 넣었습니다.

 

홈페이지에 처음 들어갔을 때 나오는 화면에서는 실제로 파이썬 프로그램을 이용하지 않고 입력한 값을 처리할 때 만든 lotto.py 파이썬 프로그램을 적용하기 때문에 위는 단순히 첫 페이지를 보여주는 역할만 합니다.

 

그리고 앞서 만든 lottopage.html파일의 값, 즉 내 로또 번호를 입력하는 부분을 보면 다음과 같습니다.

1
2
3
4
5
6
        <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>
cs

위부분은 다음과 같이 보여집니다. (참고로 css 속성을 적용한 값입니다.)

1
        <form action="{% url 'lottoresult' %}" method = "post">
cs

<form>을 설정합니다. 그리고 action은 동작했을 때 수행하는 절차인데 {% %}로 묶인 부분을 보면 url 'lottoresult'로 되어 있고 이는 lottoresult 페이지로 이동한다는 말입니다. 결과 화면을 의미합니다. 그리고 method는 post로 작성합니다.

1
        {% csrf_token %}
cs

이부분은 post로 값을 넘겨줄 때 해킹을 막기 위하여 써주는 구문이라 합니다. 그냥 써주시면 됩니다.

1
        <input placeholder="당첨번호를 입력하세요. (예: 1 11 21 31 41 45)" type="text" name="inputVal"/>
cs

내 숫자를 입력하는 입력창입니다. placeholder는 보시는 바와 같이 사전 입력 값이고 type은 문자열 타입 text로 설정합니다. 그리고 name을 inputValue로 작성하였는데 곧 요약해보면 post라는 방법으로 입력한 textinputValue라는 이름으로 lottoresult 경로로 넘겨준다는 것입니다.

1
2
3
        <button type="submit" class="button button1">
            확인
        </button>
cs

이부분은 입력 버튼입니다. 문자열을 입력하고 엔터를 쳐도 되고 submit 기능이 있는 위 버튼을 눌러도 되는 것이죠.

 

앞서 말했듯이 숫자를 입력한 후 수행(submit)하면 lotto 경로로 넘어가 주기 때문에 로또 앱 안의 urls.py에 lottoresult경로를 추가해 주고 그 경로에는 views.py의 lottoresult 함수를 수행해 줄 수 있도록 작성합니다.

1
2
3
4
urlpatterns = [
    path('', views.lottopage, name="lottopage"),
    path('lottoresult/', views.lottoresult, name="lottoresult"),
]
cs

위와 같이 추가합니다.

 

그리고 이제 views.py안의 핵심인 lottoresult 함수를 작성할 차례입니다.

+ Recent posts