Django Custom 함수 - Tirrilee/TechTalk GitHub Wiki

위도/경도 Search

설명 👍

  • SearchPage
    • GET과 Cookie를 사용해 파라미터를 가져와서 필터링
  • getBoundsFromLatLng
    • Cookie로 가져온 위도/경도를 통해 범위 구하기
# ------------------------------------------------------------------
# ViewName   : getBoundsFromLatLng
# Description : 위도/경도 기반 BoundsFrom 구하는 함수
# ------------------------------------------------------------------
import math
def getBoundsFromLatLng(lat, lng):
	# 1km 구간
	lat_change = 1 / 111.2
	lon_change = abs(math.cos(lat * (math.pi / 180)))
	bounds = {
		"lat_min": lat - lat_change,
		"lon_min": lng - lon_change,
		"lat_max": lat + lat_change,
		"lon_max": lng + lon_change
	}
	return bounds

# ------------------------------------------------------------------
# ViewName   : SearchPage
# Description : 즐겨찾기 페이지 기능 구현
# ------------------------------------------------------------------
@login_required
def SearchPage(request):
	market = request.GET.get('m', None)
	printer = request.GET.get('p', None)
	wifi = request.GET.get('w', None)
	m = True if market == "on" else False
	p = True if printer == "on" else False
	w = True if wifi == "on" else False
	lat = request.COOKIES['latitude']
	lng = request.COOKIES['longitude']

	LC = getBoundsFromLatLng(float(lat), float(lng))
	PClist = PCCenter.objects.filter(Q(wifi=w) | Q(print=p) | Q(food=m))
	PClist = PClist.filter(Q(lat__range=[LC['lat_min'], LC['lat_max']]) & Q(lng__range=[LC['lon_min'], LC['lon_max']]))
	return render(request, 'Search/SearchPage.html', {
			'PClist' : PClist,
			'checked': 3,
			'm' : m,
			'p': p,
			'w': w,
		})