[머신러닝 시각화_#2] Error code: 502-backend 장고+자바스크립트+파이선
장고,python을 pythonanywhere로 인터넷 배포하는 과정입니다.
http://http://david201207.pythonanywhere.com/
1.CAR : 정상작동
자바스크립트_CANVAS
2.그래프 : 정상작동
MATPLOT_MPLD3
3.쓰기/일기 : 정상작동
HTML/자바스크립트
4. 덧셈
1)개인pc local서버로 실행시(장고) 정상동작함
2) web으로 동작시 에러(502) ==> 에러 발생
[tensorflow code]
from django.shortcuts import render
from tensorapp.forms import *
from django.http import HttpResponse
def tensorapp(request):
import tensorflow as tf
sess = tf.Session()
a = tf.constant(2)
b = tf.constant(3)
c = a + b
html_fig=sess.run(c)
return render(request, "tesorprojd/gameexe.html", {'active_page' : 'gameexe.html', 'div_figure' : html_fig})
5. 단 덧셈을 cosoles 로 실행하면 결과값이 5로 정상 계산되어 나옴.다만, 상단에 경고메세지가 나오기는 하지만, 결과값은 정상으로 5가 출력됨
'프로젝트 > Web Server 구축' 카테고리의 다른 글
[머신러닝 시각화_#1] 장고+자바스크립트+파이선 (1) | 2018.01.03 |
---|---|
[web sever 구축_파이선_DJANGO #6 예외처리,템플릿상속,네비게이션,화일사용 (0) | 2017.09.17 |
[web sever 구축_파이선_DJANGO #5 vote.git 투표결과 동적으로 나타내기 (0) | 2017.09.17 |
[web sever 구축_파이선_DJANGO #4 ]pythonanywhere에 투표 Django WEB 배포하기 (0) | 2017.09.15 |
[web sever 구축_파이선_DJANGO #3 ] Django WEB 배포하기 (0) | 2017.09.11 |
[머신러닝 시각화_#1] 장고+자바스크립트+파이선
1.그래프,그래픽,수학공식등을 시각화 함으로써, 머신러닝에 대한 이해도 증대코자 합니다.
2. 개인PC로 구현한 머신러닝을 모든사람들이 같이 공유할수있도록 인터넷서버상에서 구현하고,
이를 인터넷 서비스로 연계를 하기위해 필요한 과정입니다.
구현상에 몇가지 이슈가 있는부분은 청색으로 구분을 했습니다.
특정 프로그램이나, 서비스에 문제가 있다기 보다는, 저의 공부가 부족함이니, 오해는 없으시길 바랍니다.
글 읽으시는 분중에서 좋은 해결책이 있으신분은 조언을 해주시면 감사하겠습니다.
-------------------------------
1.동작시현
http://daviduino.pythonanywhere.com
7. 파이선으로 간단한 텐서플로우 프로그램을 작성함 ( hellow world !!)
장고로 등록하고, 본인 pc를 서버로 하면 잘 동작함
- 추후 확인이 필요한 사항
. pythonwhere로 인터넷에 배포시에 텐서플로우가 잘 동작치 않음
. pythonwhere의 python consoles에는 tensorflow가 기본 장착이 되어있어서, 무리없이 잘 동작을 하는데,
web으로 등록하기 위해 bash console에 가상환경을 설치합니다, 이때 가상환경상에는 tensorflow 모듈이 없는것 같습니다.
가상환경하에서 tensorflow를 설치하려고 하면, 용량이 부족하다면서 설치가 않됩니다.
결국 텐서플로우를 적용한 프로그램을 web으로 배포하지 못함, 추후 다른방법 모색필요함.
8. 참고자료
'프로젝트 > Web Server 구축' 카테고리의 다른 글
[머신러닝 시각화_#2] Error code: 502-backend 장고+자바스크립트+파이선 (0) | 2018.01.07 |
---|---|
[web sever 구축_파이선_DJANGO #6 예외처리,템플릿상속,네비게이션,화일사용 (0) | 2017.09.17 |
[web sever 구축_파이선_DJANGO #5 vote.git 투표결과 동적으로 나타내기 (0) | 2017.09.17 |
[web sever 구축_파이선_DJANGO #4 ]pythonanywhere에 투표 Django WEB 배포하기 (0) | 2017.09.15 |
[web sever 구축_파이선_DJANGO #3 ] Django WEB 배포하기 (0) | 2017.09.11 |
보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.
보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.
보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.
보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.
보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.
보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.
[web sever 구축_파이선_DJANGO #6 예외처리,템플릿상속,네비게이션,화일사용
투표관련 웹 "vote" Django WEB을 통해 장고의 기능을 확인해 가는 과정입니다.
글의 순서는 아래와 같습니다.
===========================================================================
===========================================================================
[ Page Not Found 404 발생시키는 방법]
1. 예외 처리로 object가 없는 경우 HttpResponseNotFound 처리하기
# C:\Code\mysite\elections\views.py
from django.http import HttpResponseNotFound #추가
# 기존 코드 유지
def candidates(request, name):
try :
candidate = Candidate.object.get(name = name)
except:
return HttpResponseNotFound("없는 페이지 입니다.")
return HttpResponse(candidate.name)
2. 예외 처리로 url이 없는 경우와, object가 없는 경우를 함께 처리하기
# C:\Code\mysite\elections\views.py
from django.http import Http404 #추가
# 기존 코드 유지
def candidates(request, name):
try :
candidate = Candidate.object.get(name = name)
except:
raise Http404
return HttpResponse(candidate.name)
4. 예외 처리없이 url이 없는 경우와, object가 없는 경우를 함께 처리하기
# C:\Code\mysite\elections\views.py
from django.shortcuts import get_object_or_404 #추가
# 기존 코드 유지
def candidates(request, name):
candidate = get_object_or_404(Candidate, name = name)
return HttpResponse(candidate.name)
[ Page Not Found 404 발생시 다른 화면으로 넘기는 방법]
1. 디버그 설정과 디렉토리 설정 바꿔주기
# C:\Code\mystie\settings.py
# ...
DEBUG = False #True에서 False로 변경합니다
ALLOWED_HOSTS = ['localhost']
# ...
TEMPLATES = [
{
# ...
'DIRS' : ['templates'],
# ...
}
]
2. 404파일 만들어주기
<!--C:\Code\mysite\templates\404.html-->
없는 페이지 입니다.
[ templates 상속으로 코드 분량 줄이기]
1. layout.html 설정
<!-- C:\Code\mysite\elections\templates\elections\layout.html-->
<!DOCTYPE html>
<html lang="en">
<head>
<title>{% block title %}{% endblock %}</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
</head>
<body>
{% block content %}{% endblock %}
</body>
</html>
2. 각 html파일에 layout.html 상속받기
1. index.html
<!DOCTYPE html>부터 </head>까지 삭제
<body>, </body>, </html> 태그 제거
<!-- C:\Code\mysite\elections\templates\elections\index.html-->
{% extends "elections/layout.html" %}
{% block title %}
선거 후보
{% endblock %}
{% block content %}
<!-- 기존 코드 유지.
<div class = "container">로 시작하고 </table>로 끝납니다.-->
{% endblock %}
2. area.html
<!DOCTYPE html>부터 </head>까지 삭제
<body>, </body>, </html> 태그 제거
<!-- C:\Code\mysite\elections\templates\elections\area.html-->
{% extends "elections/layout.html" %}
{% block title %}
{{area}}
{% endblock %}
{% block content %}
<!-- 기존 코드 유지.
<div class = "container">로 시작하고 </div>로 끝납니다.-->
{% endblock %}
3. result.html
<!DOCTYPE html>부터 </head>까지 삭제
<body>, </body>, </html> 태그 제거
<!-- C:\Code\mysite\elections\templates\elections\result.html-->
{% extends "elections/layout.html" %}
{% block title %}
{{area}} 여론조사 결과
{% endblock %}
{% block content %}
<!-- 기존 코드 유지.
<div class = "container">로 시작하고 </div>로 끝납니다.-->
{% endblock %}
[네비게이션바 코드]
1. layout 추가하기
<!-- C:\Code\mysite\elections\templates\elections\layout.html -->
<!--기존 코드 -->
<body>
<nav class="navbar navbar-default">
<div class="container-fluid">
<div class="navbar-header">
<a class="navbar-brand" href="{% url 'elections:home' %}">사이트명</a>
</div>
</div>
</nav>
<!--기존 코드 -->
2. url설정
# C:\Code\mysite\elections\urls.py
# 기존 코드 유지
app_name = 'elections'
urlpatterns = [
url(r'^$', views.index, name = 'home')
# 기존 코드 유지
[화일 사용하기]
1. 아이콘 적용하기
1) static 파일은 DEBUG = true 상태에서 사용가능:C:\Code\mysite\mysite\settings.py 에서 DEBUG =true
2) C:\Code\mysite\elections\static\elections =>favicon 그림화일 저장
3) 경로 추가하기
<!-- C:\Code\mysite\elections\layout.html -->
{% load staticfiles %} <!-- 추가 -->
<!--기존 유지 <head> 태그 아래 코드추가>
<link rel ="shortcut icon" type = "image/x-icon" href="{% static 'elections/favicon.ico' %}" />
[소스코드]
'프로젝트 > Web Server 구축' 카테고리의 다른 글
[머신러닝 시각화_#2] Error code: 502-backend 장고+자바스크립트+파이선 (0) | 2018.01.07 |
---|---|
[머신러닝 시각화_#1] 장고+자바스크립트+파이선 (1) | 2018.01.03 |
[web sever 구축_파이선_DJANGO #5 vote.git 투표결과 동적으로 나타내기 (0) | 2017.09.17 |
[web sever 구축_파이선_DJANGO #4 ]pythonanywhere에 투표 Django WEB 배포하기 (0) | 2017.09.15 |
[web sever 구축_파이선_DJANGO #3 ] Django WEB 배포하기 (0) | 2017.09.11 |
[web sever 구축_파이선_DJANGO #5 vote.git 투표결과 동적으로 나타내기
투표관련 웹 "vote" Django WEB을 통해 장고의 기능을 확인해 가는 과정입니다.
글의 순서는 아래와 같습니다.
===========================================================================
2. 투표기간 동적으로 표현하기
3. 지지율 동적으로 표현하기
4. 참고자료
===========================================================================
[ 투표결과 나타내기]
1. 투표결과 표현형 templates 만들기
<!--C:\Code\mysite\elections\templates\elections\result.html -->
<!DOCTYPE html>
<html lang="en">
<head>
<title>지역구 여론조사 결과</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container">
<h1>지역구</h1>
<br>
<table class="table table-striped">
<thead>
<tr>
<td><B>기간</B></td>
<td><B>후보1</B></td>
<td><B>후보2</B></td>
</tr>
</thead>
<tbody>
<tr>
<td> 기간1 </td>
<td> 후보1 지지율</td>
<td> 후보2 지지율</td>
</tr>
<tbody>
</table>
</div>
</body>
2. URL을 투표결과로 연결하기
# C:\Code\mysite\elections\urls.py
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^$', views.index),
url(r'^areas/(?P<area>[가-힣]+)/$', views.areas),
url(r'^areas/(?P<area>[가-힣]+)/results$', views.results),
url(r'^polls/(?P<poll_id>\d+)/$', views.polls),
]
3. 투표후 투표결과 result위치값을 을 리턴하기/투표결과 함수를 정의하기
# C:\Code\mysite\elections\views.py
# 기존 import 유지
from django.http import HttpResponseRedirect
# def index(request) 유지
def polls(request, area):
#...
#return HttpResponse("finish") #여기 지우고
return HttpResponseRedirect("/areas/{}/results".format(poll.area))
def results(request, area):
return render(request, 'elections/result.html', )
[ 투표기간 동적으로 표현하기]
1. view.py 수정
C:\Code\mysite\elections\views.py
def results(request, area):
candidates = Candidate.objects.filter(area = area)
polls = Poll.objects.filter(area = area)
poll_results = []
for poll in polls:
result = {}
result['start_date'] = poll.start_date
result['end_date'] = poll.end_date
poll_results.append(result)
context = {'candidates':candidates, 'area':area,
'poll_results' : poll_results}
return render(request, 'elections/result.html', context)
2. view.py 수정
<html lang="en">
<head>
<title>{{area}} 여론조사 결과</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container">
<h1>{{area}}</h1>
<br>
<table class="table table-striped">
<thead>
<tr>
<td><B>기간</B></td>
{% for candidate in candidates %}
<td><B>{{candidate.name}}</B></td>
{% endfor %}
</tr>
</thead>
<tbody>
{% for result in poll_results %}
<tr>
<td> {{result.start_date.year}}/{{result.start_date.month}}/{{result.start_date.day}}~{{result.end_date.year}}/{{result.end_date.month}}/{{result.end_date.day}} </td>
<td> 후보1 지지율</td>
<td> 후보2 지지율</td>
</tr>
{% endfor %}
<tbody>
</table>
</div>
</body>
[ 지지율 동적으로 표현하기]
1.views.py 수정
# C:\Code\mysite\elections\views.py
# 여론조사 결과보기2에 Contact모델과 이어지는 views.py
def results(request, area):
candidates = Candidate.objects.filter(area = area)
polls = Poll.objects.filter(area = area)
poll_results = []
for poll in polls:
result = {}
result['start_date'] = poll.start_date
result['end_date'] = poll.end_date
# poll.id에 해당하는 전체 투표수
total_votes = Choice.objects.filter(poll_id = poll.id).aggregate(Sum('votes'))
result['total_votes'] = total_votes['votes__sum']
rates = [] #지지율
for candidate in candidates:
# choice가 하나도 없는 경우 - 예외처리로 0을 append
try:
choice = Choice.objects.get(poll = poll, candidate = candidate)
rates.append(
round(choice.votes * 100 / result['total_votes'], 1)
)
except :
rates.append(0)
result['rates'] = rates
poll_results.append(result)
context = {'candidates':candidates, 'area':area,
'poll_results' : poll_results}
return render(request, 'elections/result.html', context)
2.result.html 수정
<!-- C:\Code\mysite\elections\templates\elections\result.html -->
<!DOCTYPE html>
<html lang="en">
<head>
<title>{{area}} 여론조사 결과</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container">
<h1>{{area}}</h1>
<br>
<table class="table table-striped">
<thead>
<tr>
<td><B>기간</B></td>
{% for candidate in candidates %}
<td><B>{{candidate.name}}</B></td>
{% endfor %}
</tr>
</thead>
<tbody>
{% for result in poll_results %}
<tr>
<td> {{result.start_date.year}}/{{result.start_date.month}}/{{result.start_date.day}}~{{result.end_date.year}}/{{result.end_date.month}}/{{result.end_date.day}} </td>
{% for rate in result.rates %}
<td> {{rate}}%</td>
{% endfor %}
</tr>
<tbody>
{% endfor %}
</table>
</div>
</body>
[ 참고자료]
'프로젝트 > Web Server 구축' 카테고리의 다른 글
[머신러닝 시각화_#1] 장고+자바스크립트+파이선 (1) | 2018.01.03 |
---|---|
[web sever 구축_파이선_DJANGO #6 예외처리,템플릿상속,네비게이션,화일사용 (0) | 2017.09.17 |
[web sever 구축_파이선_DJANGO #4 ]pythonanywhere에 투표 Django WEB 배포하기 (0) | 2017.09.15 |
[web sever 구축_파이선_DJANGO #3 ] Django WEB 배포하기 (0) | 2017.09.11 |
[web sever 구축_파이선_DJANGO #2 ] 버전/백업관리를 위한 GIT 활용 (0) | 2017.09.11 |