728x90
300x250
저는 현재 아래 사진처럼 서울의 구마다 날씨를 기상청에서 받아와 표현해주는 페이지를 만들었습니다.
쉬운 코딩이라고 생각하실수도 있지만 맨 처음 지식이 전무하던 상태에서
데이터를 파이썬 Flask에서 HTML로 넘기는것이 많이 어려웠습니다.
그렇기에 제가 했던 방식이 나중에 참고되거나 도움이될까봐 작성합니다.
@app.route('/weather', methods=['GET', 'POST'])
def weather_gui():
global select_date # select_date 변수에 원하는 날짜값을 담고 추후에 사용할 기회가 있기에 전역변수로 생성했습니다.
ctime, count = count_time() # ctime = 원하는 시간간격들을 설정하기위한 변수, count = ctime의 개수입니다.
select_date = func.nowtime() # nowtime은 현재 시간을 알려주는 함수입니다.
weather = set_data_for_weather(select_date) # weather에는 사진에 있는 각 구별로 온도와 강수량, 하늘상태를 담고 있는 리스트입니다.
return render_template('weather.html', data = weather, date = select_date, time = ctime, count = count)
def count_time():
flag = 2
count = 0
ctime = []
date = set_date_for_api() # 시간을 api에 맞게 설정해주는 단순한 함수입니다.
date = date[:-2] + '00'
time_data = func.find_item(mongo, {"local":'강남구', 'date':{"$gte":date}}, "alarm", "weather")
# db에서 local이 강남구며 위의 변수 date와 크거나 같은값을 찾아서 time_data에 담습니다.
for i in time_data: # 사용자들에게 표시될 시간간격을 3시간으로 설정했습니다.
if flag == 2:
ctime.append(i)
count += 1
flag = 0
else:
flag += 1
return ctime, count
def set_data_for_weather(time):
count = 0
weather = [{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{}]
# 각 구의 기상정보를 담을 딕셔너리를 리스트안에 만들어줍니다.
dict_data = func.find_item(mongo, {"date":time}, "alarm", "weather")
# 각 구별로 date가 변수인 time에 맞는 data들을 담고 저장합니다.
for i in dict_data:
j = i['local']
if j[-1] == '구':
weather[count] = i
count += 1
else:
break
return weather
개인 프로젝트를 진행하면서 지금 코드들을 리뷰했을때 되게 어색하고 미흡한 부분이 많다고 생각이 듭니다.
그래도 필요한 부분들과 저와 같은 고민을 하신 분들에게 조금이나마 도움이 되면 좋겠습니다.
아래는 HTML의 일부분을 작성했습니다.
하나하나 펼쳐보면 어려운 부분은 아니라 따로 설명은 작성하지 않겠습니다.
<body>
<div style='position: absolute'>
<img height="800px" width="1200px" src="{{ url_for('static', filename='./map.jpg') }}"/><br>
<!-- 강남구 -->
<div id="layer1" style="cursor:pointer; left:750px; bottom:160px; width:80px; font-size:1em; font-weight:bold; position:absolute; color:rgb(124, 122, 122);"
onclick="window.location.href='/weather/local/강남구';">
{{data[0]['tmp']}}도/{{data[0]['rain']}}%<br>
{% if data[0]['sky'] == 'sunny' %}
<img height='25px' width='25px' src="{{ url_for('static', filename='./sunny.png') }}"/>
{% elif data[0]['sky'] == 'cloudy' %}
<img height='40px' width='40px' src="{{ url_for('static', filename='./cloudy.png') }}"/>
{% else %}
<img height='40px' width='40px' src="{{ url_for('static', filename='./gray2.png') }}"/>
{% endif %}
</div>
728x90
300x250
'Python' 카테고리의 다른 글
파이썬-실습(7) 카카오 디벨로퍼 인가코드, OWNER 토큰 (0) | 2021.12.16 |
---|---|
파이썬-실습(6) HTML 콤보박스 값을 HTML에 다시 반영하기 (0) | 2021.12.15 |
Flask(플라스크) OSError: [Errno 98] Address already in use (0) | 2021.12.07 |
파이썬-실습(4) EC2에 기준 시간대를 한국 시간대로 바꾸기 (0) | 2021.11.28 |
파이썬-실습(3) EC2에 Docker로 MongoDB를 설치하자 (0) | 2021.11.22 |