views.py
3.76 KB
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#-*- coding:utf-8
from django.shortcuts import render
from django.db.models import Count, Max, Sum, Avg
from urllib.request import urlopen
from .models import RT_edu, Maps, RT_agri_policy, ProductData, AuctionData
from bs4 import BeautifulSoup
import pandas as pd
# Create your views here.
def returnfarm_dbselect(contenttype, maptype):
if maptype == 9:
mapt = 'city'
elif maptype == 10:
mapt = 'cntr'
if contenttype=='policy':
myrtrn = RT_agri_policy.objects.values(mapt).annotate(count=Count(mapt))
return myrtrn
elif contenttype=='edu':
myrtrn = RT_edu.objects.values(mapt).annotate(count=Count(mapt))
return myrtrn
# 공공데이터 불러오는 부분
def publicdata(densitytype):
# 통계청 귀농가구원의 시도별, 시군별, 연령별
if densitytype == 'returnfarm_agri_population':
url = 'http://kosis.kr/openapi/statisticsData.do?method=getList&apiKey=M2I3MWFhNzE2MjlkYjhhNzgwNWFjNWQ3MGU0MzY5Y2Y=&format=json&jsonVD=Y&userStatsId=tjsdk3105/101/DT_1A02003/2/1/20200529160216&prdSe=Y&newEstPrdCnt=1'
elif densitytype == 'population':
url = 'http://kosis.kr/openapi/statisticsData.do?method=getList&apiKey=M2I3MWFhNzE2MjlkYjhhNzgwNWFjNWQ3MGU0MzY5Y2Y=&format=json&jsonVD=Y&userStatsId=tjsdk3105/101/DT_1IN1502/2/1/20200611044341&prdSe=Y&newEstPrdCnt=1'
data = urlopen(url).read().decode('utf8')
return data
def main(request):
return render(request, 'main.html')
# html에 넘겨주는 부분
####### return farm ##########
def returnfarm(request):
try:
maptype = request.GET['maptype']
contenttype = request.GET['contenttype']
mapp = Maps.objects.get(id=int(maptype))
exportdatas = returnfarm_dbselect(contenttype, int(maptype))
maxx = exportdatas.aggregate(maxx=Max('count'))
except:
mapp = Maps.objects.get(id=9)
exportdatas = {}
maxx = {'maxx' : 100}
context = {'exportdata': exportdatas, 'maps':mapp, 'max':maxx}
return render(request, 'returnfarm.html', context)
######## population ###########
def population(request):
try:
maptype = request.GET['maptype']
densitytype = request.GET['densitytype']
mapp = Maps.objects.get(id=int(maptype))
exportdatas = publicdata(densitytype)
except:
mapp = Maps.objects.get(id=9)
exportdatas = {}
context = {'exportdata': exportdatas, 'maps':mapp}
return render(request, 'population.html', context)
########### market ##########
def market(request):
product_large = ProductData.objects.values('large_cd','large_nm').distinct()
product_medium = ProductData.objects.values('medium_cd','medium_nm').distinct()
product_small = ProductData.objects.values('small_cd','small_nm')
try:
maptype = request.GET['maptype']
mapp = Maps.objects.get(id=int(maptype))
largefilter = request.GET['ctgr_large']
mediumfilter = request.GET['ctgr_medium']
if mediumfilter=='all':
if largefilter=='all':
exportdatas = AuctionData.objects.values('sanji_nm').annotate(count=Count('sanji_nm'))
else:
exportdatas = AuctionData.objects.values('sanji_nm').filter(large_cd=largefilter).annotate(count=Count('sanji_nm'))
else:
exportdatas = AuctionData.objects.values('sanji_nm').filter(medium_cd=mediumfilter).annotate(count=Count('sanji_nm'))
except:
mapp = Maps.objects.get(id=9)
exportdatas = AuctionData.objects.values('sanji_nm').annotate(count=Count('sanji_nm'),avrg=Avg('mumm_amt'))
maxx = exportdatas.aggregate(maxx=Sum('count'))
context = {'largedata' : product_large, 'mediumdata': product_medium, 'maps':mapp, 'max':maxx, 'exportdata':exportdatas}
return render(request, 'market.html', context)