TechTogetWorld

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

확인

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

확인

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

확인

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

확인

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

확인

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

확인


 daviduino.co.kr

techtogetworld.com

 david201207.blog.me

cafe.naver.com/3dpservicedavid


투표관련 웹 "vote" Django WEB을 통해 장고의 기능을 확인해 가는 과정입니다.

글의 순서는 아래와 같습니다.


===========================================================================

1. Page Not Found 404 발생시키는 방법
2. Page Not Found 404 발생시 다른 화면으로 넘기는 방법
3. templates 상속으로 코드 분량 줄이기
4. 네비게이션바 코드
  - 각 페이지의 공통 내용을 네비게이션에 등록
5. 화일 사용하기 : 아이콘 화일 적용
6. Ddjango web 시현 : pythonanywhere
7. 소스
8 참고자료

===========================================================================



[ 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' %}" />


[소스코드]

20170916 2 vote.zip



[참고자료]



Comment +0


 daviduino.co.kr

techtogetworld.com

 david201207.blog.me

cafe.naver.com/3dpservicedavid


투표관련 웹 "vote" Django WEB을 통해 장고의 기능을 확인해 가는 과정입니다.

글의 순서는 아래와 같습니다.


===========================================================================

1. 투표결과 나타내기

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>




[ 참고자료]


Comment +0


 daviduino.co.kr

techtogetworld.com

 david201207.blog.me

cafe.naver.com/3dpservicedavid


기존에 작성했던 투표관련 웹 "vote" Django WEB 을  pythonanywhere에 배포하는 과정입니다.

특히 디렉토리 구조에 신경쓰지 않으면, 배포시 에러가 발생하므로, 유심히 볼 필요가 있습니다.

글의 순서는 아래와 같습니다.


===========================================================================

[ 배포하기]==> PythonAnywhere
1. GIT, GITHUB를 설치하고, 저장소를 만들어서 저장한다
2. GitHub에서 PythonAnywhere로 코드 가져오기
3. PythonAnywhere에서 가상환경(virtualenv) 생성하기
4. PythonAnywhere에서 데이터베이스 생성하기
5. web app으로 블로그 배포하기

6. 가상환경(virtualenv) 설정하기

7. WSGI 파일 설정하기

8. 구현된 모습 : 정상작동중

   ==>http://david20120720.pythonanywhere.com/

9. 참고 : pythonanywhere 가입후 자동설치되는 화일 구조

10. source file

vote.zip




[ 참고자료

     https://programmers.co.kr/learn/courses/6

===========================================================================




[ 배포하기]==> PythonAnywhere

1. GIT, GITHUB를 설치하고, 저장소를 만들어서 저장한다

   ==> 참고글 http://daviduino.co.kr/86

  - github에 올려진 형태 : 디렉토리 구조가 틀리면 web 실행시 에러 발생함, 구조를 맞추어야 함.


2. GitHub에서 PythonAnywhere로 코드 가져오기

  - 배시(Bash)" 콘솔을 실행해서, 콘솔화면으로 들어간다

  - PythonAnywhere command-line

   . $ git clone https://github.com/david20120720/vote.git

   . $ tree vote 명령어를 입력  ==> 화일이 제대로 불러와졌는지 확인가능 , 디렉토리 구조가 틀리면 배포시 에러 발생함

PythonAnywhere command-line

$ tree vote

13:27 ~ $ tree vote 

vote

├── db.sqlite3

├── elections

│   ├── __init__.py

│   ├── __pycache__

│   │   ├── __init__.cpython-36.pyc

│   │   ├── admin.cpython-36.pyc

│   │   ├── models.cpython-36.pyc

│   │   ├── urls.cpython-36.pyc

│   │   └── views.cpython-36.pyc

│   ├── admin.py

│   ├── apps.py

│   ├── migrations

│   │   ├── 0001_initial.py

│   │   ├── 0002_auto_20170910_1447.py

│   │   ├── 0003_auto_20170910_1714.py

│   │   ├── __init__.py

│   │   └── __pycache__

│   │       ├── 0001_initial.cpython-36.pyc

│   │       ├── 0002_auto_20170910_1447.cpython-36.pyc

│   │       ├── 0003_auto_20170910_1714.cpython-36.pyc

│   │       └── __init__.cpython-36.pyc

│   ├── models.py

│   ├── templates

│   │   └── elections

│   │       ├── area.html

│   │       └── index.html

│   ├── tests.py

│   ├── urls.py

│   └── views.py

├── manage.py

└── mysite

    ├── __init__.py

    ├── __pycache__

    │   ├── __init__.cpython-36.pyc

    │   ├── settings.cpython-36.pyc

    │   ├── urls.cpython-36.pyc

    │   └── wsgi.cpython-36.pyc

    ├── settings.py

    ├── urls.py

    └── wsgi.py


3. PythonAnywhere에서 가상환경(virtualenv) 생성하기

  - PythonAnywhere command-line

$ cd vote

$ virtualenv --python=python3.6 myvenv

Running virtualenv with interpreter /usr/bin/python3.6

[...]

Installing setuptools, pip...done.

$ source myvenv/bin/activate

(myvenv) $  pip install django~=1.11.0

Collecting django

[...]

Successfully installed django-1.11.3

5분정도 시간이 소요될수 있음


4. PythonAnywhere에서 데이터베이스 생성하기

 - pythonAnywhere command-line

   . (mvenv) $ python manage.py migrate

Operations to perform:

[...]

     Applying sessions.0001_initial... OK

   . (mvenv) $ python manage.py createsuperuser


5. web app으로 블로그 배포하기

  - PythonAnywhere 대시보드 ==>Web==>Add a new web app

  - 도메인 이름을 확정한 후, 대화창에 수동설정(manual configuration)

  - Python 3.6을 선택하고 다음(Next)을 클릭하면 마법사가 종료됩니다.

    . Note "Django"가 아니라  "수동설정(Manual configuration)"을 선택해야함

    . 기본 PythonAnywhere Django 설정을 위해서 이방법이 유리함.



6. 가상환경(virtualenv) 설정하기

 - "가상환경(Virtualenv)" 섹션에서 가상환경 경로를 입력(Enter the path to a virtualenv) ==> /home/david20120720/vote/myvenv/

    라고 입력

7. WSGI 파일 설정하기

 - "WSGI 설정 파일(WSGI configuration file)" ==> /var/www/<your-username>_pythonanywhere_com_wsgi.py부분) 클릭

 - 모든내용을 삭제==>아래 내용으로 기록

import os

import sys

path = '/home/david20120720/vote/'  # PythonAnywhere 계정으로 바꾸세요. ==> vote까지만 입력한다, mysite 까지 들어가면 에러 발생함.

if path not in sys.path:

    sys.path.append(path)

os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'

from django.core.wsgi import get_wsgi_application

from django.contrib.staticfiles.handlers import StaticFilesHandler

application = StaticFilesHandler(get_wsgi_application())

8 directories, 32 files


  - 저장=> WEB 클릭

  - 모두 끝았음. RELOAD 및 홈페이지 실행시 웹이 실행됨


8. 구현된 모습 : 정상작동중   



9. 참고 : pythonanywhere 가입후 자동설치되는 화일 구조

    


 10. source file





[ 참고자료]


    

Comment +0


 daviduino.co.kr

techtogetworld.com

 david201207.blog.me

cafe.naver.com/3dpservicedavid


[web sever 구축_파이선_DJANGO #3 ]Django WEB 배포하기


글의 순서는 아래와 같습니다.


===========================================================================


[ 장고 설치하기] ==> 기존글과 동일

[ 설정변경하기]

[ 데이터베이스 설정하기]

[ 어플리케이션 만들기]

[ 블로그글 모델 만들기]

[ 장고 관리자 등록]

[ 배포하기]

 -PythonAnywhere

[참고자료 ]  

https://tutorial.djangogirls.org/ko/deploy/

https://tutorial.djangogirls.org/ko/installation/

============================================================================


[ 장고 설치하기] ==> 기존글과 동일


아나콘다 콘솔화면에서 ==> pip install django

=> 장고설치는 비주얼한 화면등은 없음, 장고설치후 아래 명령어 실행시 프로젝트 틀을 만들어 주는 역할을 함

django-admin startproject <프로젝트이름> => mysite

=> "<c:\anaconda36>c:\>django-admin startproject mysite " 로 입력하면, c 드라이브에 mysite 폴더가 생성되면서, 

관련 파일들이 같이 생성이되어 디렉토리에 저장이 된다.

이 화일을들을 아래와 같이 수정해 나가면 됨

python manage.py runserver

웹브로우저 실행: http://127.0.0.1:8000/


[ 설정변경하기]

mysite/settings.py

    TIME_ZONE = 'Asia/Seoul'

mysite/settings.py

STATIC_URL = '/static/'

STATIC_ROOT = os.path.join(BASE_DIR, 'static')

mysite/settings.py

ALLOWED_HOSTS = ['127.0.0.1', '.pythonanywhere.com'] 


[ 데이터베이스 설정하기]

mysite/settings.py

DATABASES = {

    'default': {

        'ENGINE': 'django.db.backends.sqlite3',

        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),

    }

}


데이터베이스 생성 => 프롬프트에서 python manage.py migrate 실행


[ 어플리케이션 만들기]

python manage.py startapp blog =>blog라는 이름의 어플리케이션 만들기

mysite/settings.py 화일 수정

INSTALLED_APPS = [

    'django.contrib.admin',

    'django.contrib.auth',

    'django.contrib.contenttypes',

    'django.contrib.sessions',

    'django.contrib.messages',

    'django.contrib.staticfiles',

    'blog',


[ 블로그글 모델 만들기]

blog/models.py

from django.db import models

from django.utils import timezone

class Post(models.Model):

    author = models.ForeignKey('auth.User')

    title = models.CharField(max_length=200)

    text = models.TextField()

    created_date = models.DateTimeField(

            default=timezone.now)

    published_date = models.DateTimeField(

            blank=True, null=True)


    def publish(self):

        self.published_date = timezone.now()

        self.save()


    def __str__(self):

        return self.title

python manage.py makemigrations blog ==> 데이터베이스 반영전 마이그레이션 화일 준비함

python manage.py migrate blog ==> 글 모델이 데이터베이스에 저장됨


[ 장고 관리자 등록]

'settings.py'중 LANGUAGE_CODE = 'en-us'를 LANGUAGE_CODE = 'ko' ==> 관리자 화면 한국어로 변경

blog/admin.py ==> 화일수정

from django.contrib import admin

from .models import Post

admin.site.register(Post)==> 모델 등록하기

python manage.py createsuperuser : 아래는 예시임
command-line
(myvenv) ~/djangogirls$ python manage.py createsuperuser
Username: admin
Email address: admin@admin.com
Password:
Password (again):
Superuser created successfully.


사이트 접속하기
    - http://127.0.0.1:8000/admin/  으로 접속하고
    - 아이디로 로그인 하면 아래 위에서 만들었던 블로그 어플리케이션이 실행이 된다.


   상기내용들은 복습성격이 강함

[ 배포하기]==> PythonAnywhere

1. GIT, GITHUB를 설치하고, 저장소를 만들어서 저장한다

  - GIT 을 설치한다

  - 소스코드를 COMMIT하여, GIT에 버전관리 등록한다

  - GITHUB 설치한다

  - GITHUB에 저장소를 만들어, GIT의 화일을 싱크해 온다 ( GIT에서 PUSH 하기) 

  - 세부방법은 이전글 http://daviduino.co.kr/85 을 참고한다


2. PythonAnywhere에 블로그 설정하기

  - 회원가입한다(무료)

3. GitHub에서 PythonAnywhere로 코드 가져오기

  - 배시(Bash)" 콘솔을 실행해서, 콘솔화면으로 들어간다

  - PythonAnywhere command-line

   . $ git clone https://github.com/<your-github-username/my-first-blog.git

   . $ tree my-first-blog 명령어를 입력  ==> 화일이 제대로 불러와졌는지 확인가능

PythonAnywhere command-line

$ tree my-first-blog

my-first-blog/

├── blog

│   ├── __init__.py

│   ├── admin.py

│   ├── migrations

│   │   ├── 0001_initial.py

│   │   └── __init__.py

│   ├── models.py

│   ├── tests.pyㅊㅇ  ㅡ

│   └── views.py

├── manage.py

└── mysite

    ├── __init__.py

    ├── settings.py

    ├── urls.py

    └── wsgi.py


4. PythonAnywhere에서 가상환경(virtualenv) 생성하기

  - PythonAnywhere command-line

$ cd my-first-blog

$ virtualenv --python=python3.6 myvenv

Running virtualenv with interpreter /usr/bin/python3.6

[...]

Installing setuptools, pip...done.

$ source myvenv/bin/activate  ==> 위에서 설치한 가상환경을 활성화 함

(myvenv) $  pip install django~=1.11.0 => 가상환경 안에서 장고를 설치함

Collecting django

[...]

Successfully installed django-1.11.3

5분정도 시간이 소요될수 있음


5. PythonAnywhere에서 데이터베이스 생성하기

 - ythonAnywhere command-line

   . (mvenv) $ python manage.py migrate

Operations to perform:

[...]

     Applying sessions.0001_initial... OK

   . (mvenv) $ python manage.py createsuperuser


6. web app으로 블로그 배포하기

  - PythonAnywhere 대시보드 ==>Web==>Add a new web app

  - 도메인 이름을 확정한 후, 대화창에 수동설정(manual configuration)

  - Python 3.6을 선택하고 다음(Next)을 클릭하면 마법사가 종료됩니다.

    . Note "Django"가 아니라  "수동설정(Manual configuration)"을 선택해야함

    . 기본 PythonAnywhere Django 설정을 위해서 이방법이 유리함.



7. 가상환경(virtualenv) 설정하기

 - "가상환경(Virtualenv)" 섹션에서 가상환경 경로를 입력(Enter the path to a virtualenv) ==> /home/<your-username>/my-first-blog/myvenv/ 

    라고 입력

8. WSGI 파일 설정하기

 - "WSGI 설정 파일(WSGI configuration file)" ==> /var/www/<your-username>_pythonanywhere_com_wsgi.py부분) 클릭

 - 모든내용을 삭제==>아래 내용으로 기록

import os

import sys

path = '/home/david2012/my-first-blog/mysite2/'  # PythonAnywhere 계정으로 바꾸세요.(하기 청색부분 참고바람)

if path not in sys.path:

    sys.path.append(path)

os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite2.settings'

from django.core.wsgi import get_wsgi_application

from django.contrib.staticfiles.handlers import StaticFilesHandler

application = StaticFilesHandler(get_wsgi_application())


** 특히 " path = '/home/david2012/my-first-blog/mysite2/'  # PythonAnywhere 계정으로 바꾸세요. " 요 부분을 설정할때 주의를 요한다

   본 글에서는 아래와 같이 설정했을때(/home/david20120720/mtsite, 정상작동을 했음 . 예전에 상기와 같이 했을때 정상작동을 했음

   즉 프로그램의 디렉토리 저장상태에 따라 결정하면 됨.

   아래 그림은

david20120720 계정의 mysite 프로젝트를 path 로 지정하고

path안의 폴더 mysite안의 setting (mysite.settings) 화일에 접근하는것을 나타내고 있음.




  - 저장=> WEB 클릭

  - 모두 끝았음. RELOAD 및 홈페이지 실행시 웹이 실행됨


9. 구현된 모습 : 정상작동중

http://david20120720.pythonanywhere.com/ 로 접속하면 아래 화면이 나오고


    david20120720.pythonanywhere.com/admin/으로 접속하고, 로긴 하면  아래와 같이 어플리케이션이 실행됨





    



[참고자료 ]


https://programmers.co.kr/learn/courses/6

http://daviduino.co.kr/85


Comment +0