굳헬로의 스팀 프로그램 일기!! 일흔여덟번째 #78 파이썬 웹 프레임워크 장고의 이해!! 장고 모델을 등록하고, 어플리케이션을 만들어 보자!!

in #sct5 years ago

토요일 잘 보내고 계신가요??

어제 너무 열심히 논다고 무리를 했더니... 온몸이 쑤시는군요.

그래도 파이썬 웹 프레임워크 장고 강의 보면서 공부를 좀 했더니, 무언가 만들고 싶은 욕구가 생기고 있네요.

그럼 오늘도 프로그램 일기 남겨보겠습니다.


그동안 스팀 파이썬 프로그램을 PHP 웹 프로그래밍으로 실행해왔었는데, 점점 계산해야 하는 양이 늘어나니, 웹 페이지에서 대기시간이 길어지고, 타임 아웃도 만나게 되고, 이래선 안되겠다는 생각이 들어, 제대로 된 파이썬 웹 프로그래밍을 시작해 보기로 하고, 어제부터 파이썬 웹 프레임워크를 공부가 시작되었네요.

항상 느끼는거지만 새로운 것을 배울때에는 처음이 정말 쉽지가 않습니다.

이런저런 예기치 못한 상황을 맞이하게 되고, 그런것들을 넘어서지 못하면 앞으로 나아갈 수가 없기에 시간도 많이 소요되고 있습니다.

어제부터 파이썬 웹 프레임워크 장고를 야심차게 시작했지만, 여러가지 이유로 진도가 더디게 나가고 있는것 같네요.

서두르다 놓치는게 너무 많다보니 하나 하나 집중해서 진도를 나아가야 할 것 같습니다.


어제는 파이썬 웹 프레임워크인 장고를 설치하고, 첫번째 장고 프로젝트를 만들어 웹 서버를 가동시켜 웹 브라우저로 접속까지 해보는 작업을 하였습니다.

이제 장고를 마구 마구 주물러 보아야 하는데요.

그러기 위해선 먼저 장고에 대한 이해도를 높여야 하겠더라구요.

저에겐 처음 접하는 기술들이 많다보니, 적응하기가 쉽지 않네요.

그럼 지금부터 하나하나 익혀가보도록 하겠습니다.

먼저 어제 mysite라는 첫번째 장고 프로젝트를 만들었는데요.

mysite라는 폴더가 생성되고 안에는

위와 같은 파일 구조가 자동으로 형성되게 됩니다.

settings.py 파일에는 웹 프로젝트 mysite의 설정들이 들어 있으며, urls.py 파일은 웹사이트의 접속 주소를 관리합니다.

그럼 오늘은 장고에 대한 이해를 높히기 위해, 하나의 프로젝트를 더 만들고 실행해 보도록 하겠습니다.

장고 모델을 만들고 데이터베이스에 저장하는 blog 프로젝트를 만들어 보겠습니다.

python manage.py startapp blog

manage.py 를 이용하여 blog 어플리케이션을 만들어 줍니다.

그러면 blog 어플리케이션 폴더가 생성되고

위와 같은 파일들이 자동으로 생성됩니다.

이제 mysite/settings.py을 조금 고쳐보도록 하겠습니다.

UTC로 되어 있는 타임존을

TIME_ZONE = 'Asia/Seoul'

바꿔주고

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

정적파일 경로를 추가합니다. ( 이 부분은 차 후 다루도록 하겠습니다.)

그리고 웹 사이트의 데이터를 저장하는 데이터베이스 설정은 기본 설정인 sqlite3을 그대로 사용하도록 하겠습니다.

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

그리고 방금 생성한 blog 어플리케이션을 장고에 등록해줘야 합니다.

# Application definition

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'blog',
]

위와 같이 INSTALLED_APPS 마지막에 blog를 추가해 주면 됩니다.

그리고 블로그 글 모델을 만들겠습니다.

blog/models.py 파일에 다음과 같은 코드를 입력합니다.

from django.conf import settings
from django.db import models
from django.utils import timezone


class Post(models.Model):
    author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    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

Post 클래스를 모델로 정의 하고 있습니다.

다음으로 데이터베이스에 모델을 추가해줘야 합니다.

python manage.py makemigrations blog

python manage.py migrate blog

makemigrationsblog를 위한 마이그레이션 파일을 준비하고

Migrations for 'blog':
  blog\migrations\0001_initial.py
    - Create model Post

migrate명령을 통해 실제 데이터베이스에 모델을 반영합니다.

Operations to perform:
  Apply all migrations: blog
Running migrations:
  Applying blog.0001_initial... OK

이렇게 모델이 데이터베이스에 저장이 되었습니다.

이렇게 생성한 모델을 장고 관리자에서 추가, 수정, 삭제 할 수 있다고 하니, 장고 관리자를 만들어 보겠습니다.

blog/admin.py 파일에 다음의 코드를 입력합니다.

from django.contrib import admin
from .models import Post

admin.site.register(Post)

Post를 관리자 페이지에 추가하는 코드입니다.

이제 python manage.py runserver 명령으로 웹 서버를 가동하고

웹 브라우저에 http://127.0.0.1:8000/admin/ 주소로 접속을 하면

관리자 페이지에 접속이 되는데, 로그인이 필요하다고 하네요.

그럼 관리자를 생성해서 로그인을 해보도록 하겠습니다.

python manage.py createsuperuser

커맨드 창에서 위의 명령어로 관리자를 아이디와 이메일 패스워드를 입력해 생성합니다.

방금 생성한 관리자 계정으로 로그인을 하면

관지라 페이지에 접속이 되는군요.

여기까지 해서 오늘은 blog라는 장고 어플리케이션을 만들고 이 모델을 데이터베이스에 등록하고 관리자를 생성하여, 관리자 페이지까지 접속되는것을 확인해 보았습니다.

그나저나 장고 정말 놀랍네요.

이렇게 간단히 블로그를 지원하는 모델을 설치하고 사용할 수 있게 해주다니...

이래서 많은 사람들이 장고를 사용하는가 봅니다.

저도 하나씩 차근차근 따라해보니 조금씩 감이 오고 있는 것 같습니다.

그럼 다음 시간에도 계속 공부해 나가면서 장고를 더 많이 알아보도록 하겠습니다.

행복한 토요일 보내시고, 오늘 하루도 파이팅입니다.


굳헬로의 스팀 프로그램 일기!! 시리즈

#1 Python 프로그램 설치 && steemengine 파이썬 api 설치 && 간단한 steemengine 예제

#2 비주얼 스튜디오 코드 프로그램 설치 && 비주얼 스튜디오 코드를 사용하여 파이썬 다루기 && 간단한 steemengine 예제

#3 스팀엔진 토큰의 정보를 가져오는 findOne() && 누군가의 토큰 사용 내역을 가져오는 get_history() && JSON 데이터 출력

#4 steemengine Token 클래스 && Token.get_holder() && Token.get_market_info() && Token.get_buy_book() && Token.get_sell_book()

#5 스팀엔진 블록을 뒤져서 원하는 정보를 찾아보자!! 스팀엔진 마켓 거래 내역을 뽑아내는 예제

#6 파이썬으로 스팀엔진 토큰들을 클레임 해보자.

#7 드디어 첫 실전!! 무한 반복 작업 수행하기!! 이제 직접 클레임 하는 손맛은 잊자. 무한 반복 자동 클레임!!

#8 텔레그램 봇을 이용해 알림을 받아보자!! && 무한 반복 자동 클레임의 정보를 텔레그램으로 받아보기!!

#9 무한 반복 자동 클레임 업그레이드!! && 토큰 잔고 확인 && 토큰 전송과 토큰 전송 내역을 텔레그램으로 받아보기!!

#10 토큰 전송내역을 검사하고, 토큰을 전송 받으면 텔레그램으로 알림을 받아보기!!

#11 스팀엔진 토큰 임대내역 추적. 쉽지 않았던 머나먼 여정 (1/2)

#12 스팀엔진 토큰 임대내역 추적. 쉽지 않았던 머나먼 여정 (2/2) 스팀엔진 토큰 임대내역 추적 완료!!

#13 웹 프로그래밍의 시작!! 파이썬을 이용하여 정보를 MySQL 데이터 베이스에 저장해보기!!

#14 파이썬을 이용하여 데이터베이스로부터 정보를 가져오기 && 스팀코인판 3대풀 임대내역 데이터베이스 작업 완료!!

#15 웹 프로그래밍을 이용하여 스팀코인판 3대조합의 임대 내역을 웹으로 확인해보자 !!

#16 스팀엔진 최신 블록을 검사하여 필요한 정보를 데이터베이스에 저장하기!! 3대 조합의 임대내역을 최신으로 저장하기!!

#17 조합들이 필요한 기능 드디어 완성!! 자동 클레임과 자동 분배 기능!!

#18 스팀코인판 3대 조합의 임대내역과 실시간 예상 분배 금액을 웹으로 확인해보자!!

#19 어제 만든 프로그램 업그레이드!! 개별 상세내역보기 기능 추가!!

#20 시행착오... 그리고 시련... 하지만 원사마님 덕분으로 엄청난 레벨업!! 감사합니다. 더욱 발전하겠습니다.

#21 레벨업을 했지만 또 다시 찾아온 시련!! 프로그램 결과와 블록체인에 기록된 결과가 다르다!! 어떻게 해야 할까...

#22 오늘부터 새로운 도전!! 자동 보팅 만들기!! 그 첫번째 스팀코인판의 소각글에 자동보팅을 해보자!! 첫번째 시간 (1/N)

#23 스팀코인판의 소각글의 정보를 가지고 와서 자동보팅을 해보자!! 그 두번째 시간 (2/N)

#24 스팀코인판 3대조합의 임대내역을 웹으로 확인해보자!! 업그레이드!!

#25 스팀코인판 3대조합의 임대내역을 웹으로 확인해보자!! 업그레이드 2!! 그리고 개발 예정 사항 공개!!

#26 드디어 첫 실전 가동 준비중... 스팀코인판 유니온 조합의 수익 자동분배 작업 완료중...

#27 스팀코인판 유니온 조합 첫 자동 분배 결과!! 그리고 보완!!

#28 스팀코인판 유니온 조합 자동 분배 프로그램의 결과를 웹으로 확인해 보자!!

#29 스팀코인판 유니온 조합 자동 분배 상황을 텔레그램으로 확인!! 임내 확인 페이지 정렬 기능 추가!!

#30 스팀코인판 조합의 임대량 페이지 정렬 기능 업그레이드!! 그리고 임대량 파이 차트 완성!!

#31 스팀코인판 조합의 하루하루 임대량 변화를 차트로 확인해보자!!

#32 트리플A를 이용하면서 그동안 번거로웠던 클레임 스테이킹 전송 작업 이젠 안녕!! 자동으로 AAA를 전송하고 클레임하고 스테이킹을 해보자!!

#33 굳헬로가 만든 스팀코인판 조합 자동 클레임과 자동 분배 프로그램 원피스 조합에도 사용 개시!!

#34 스팀코인판 조합 원피스 자동 클레임과 자동 분배 프로그램 업그레이드!! 텔레그램 봇으로 그룹 메시지를 받아보자!!

#35 스팀에서 새글 정보를 텔레그램으로 받아보자!! 함께 정보를 받아보는 텔레그램 그룹방 개설!!

#36 스팀엔진 블록 검사 놓치는 블록이 없도록 해보자!! 파일 입출력 기능 활용!!

#37 스팀엔진 블록을 검사하여 본인글의 댓글을 텔레그램 알람으로 받아보자!!

#38 드디어 완성!! 보팅 알람봇!! 스팀엔진 블록을 검사하여 본인글에 보팅이 찍히면 텔레그램 알람으로 받아보자!!

#39 파이썬과 텔레그램을 이용한 챗봇 프로그래밍의 시작!! 그 첫번째!! 챗봇과 대화를 해보고,특정 메시지에 반응을 해보자!!

#40 파이썬과 텔레그램을 이용한 챗봇 프로그래밍!! 파이썬에 CommandHandler를 사용하여 특정 명령어를 내려보자!!

#41 굳헬로의 텔레그램 보팅알람 서비스 일단은 완성!! 앞으로 다양한 기능 추가 예정!! 사용해보고 후기 남겨주세요!!

#42 업비트의 원화 마켓 코인들의 시세를 텔레그램으로 받아보자!! /get 비트코인, /get 스팀, /get 코인이름 명령어 등록!!

#43 업비트의 원화 마켓 코인들의 시세를 텔레그램으로 받아보자2!! 알려줘 비트코인, 알려줘 스팀 노노!! 이제 바로 비트코인 스팀 명령어 등록!!

#44 매일 매일 새로운 기능이 추가되고 있는 굳스팀 챗봇!! 챗봇을 이용하여 스팀엔진 토큰의 시세 정보를 받아보자!!

#45 텔레그램 챗봇을 이용하여 최신 코인 주요 뉴스를 받아보자!! 굳스팀 챗봇 소개!!

#46 굳스팀 텔레그램 챗봇 새 기능 추가!! 굳스팀 챗봇을 이용하여 최신 헤드라인 뉴스 정보를 받아보자!!

#47 뉴스를 구독해보자!! 명령어 입력없이 특정 시간 챗 봇이 뉴스를 자동으로 보내 드립니다.

#48 본격적으로 스팀코인판 조합의 자동 보팅시스템 제작 돌입!! 기본 설계 및 보팅 설정 페이지 작업 완료!!

#49 스팀코인판 조합의 자동 보팅시스템 제작 2번째 시간!! 보팅 설정에 따라 각 조합원 별로 보팅룰을 적용해 보자!!

#50 스팀코인판 조합의 자동 보팅시스템 제작 3번째 시간!! 설 정된 보팅룰을 파이썬 자동 보팅 프로그램에 가져오기!!

#51 스팀코인판 조합의 자동 보팅시스템 제작 4번째 시간!! 블록을 검사하여 설정된 보팅룰로 보팅하기!!

#52 스팀코인판 조합의 자동 보팅시스템 제작 5번째 시간!! 자동 보팅시스템 테스트 현황!! 굳!! 따봉~~

#53 스팀코인판 조합의 자동 보팅시스템 제작 6번째 시간!! 보팅룰 검사 프로그램과 자동 보팅 프로그램의 분리!!

#54 스팀코인판 조합의 자동 보팅시스템 제작 마지막 시간!! 드디어 실전 가동!! 오류 수정 및 보팅 현황 확인 웹 페이지 제작 완료!!

#55 이번에는 유니온 조합의 자동보팅 시스템을 만들어 보자!! 유니온 조합의 보팅설정 프로그램과 보팅 설정 결과 확인 기능 완료!!

#56 스팀 블록을 검사하여 유니온 조합의 조합원 글에 보팅 룰셋 적용 및 자동 보팅 수행!!

#57 유니온 조합 우량 임대자 우대 조치!! 특별 규칙에 따른 보팅 설정 적용!!

#58 유니온 조합 자동 보팅 프로그램 테스트 결과 성공!! 보팅 현황을 확인할 수 있는 웹 페이지 추가 완료!!

#59 새로운 프로그램 공부를 시작!! 스팀몬스터 자동화를 위해 스팀몬스터 API를 분석해보자!! 그 첫시간!!

#60 스팀몬스터 사용자 정보를 출력해보고, 사용자가 가진 카드 정보를 출력해보자.

#61 조합의 자동분배 프로그램 수정 및 유니온 자동보팅 프로그램 가동 시작!! 오늘도 파이썬으로 스팀몬스터 API를 공부해 보자!!

#62 조합의 자동보팅 프로그램 업그레이드!! 오늘은 스팀몬스터 마켓의 정보를 가져오는 API를 공부해 보자!!

#63 파이썬 스팀몬스터 API를 이용하여 사용자가 보유하고 있는 모든 카드의 값을 계산해보자!!

#64 파이썬 스팀몬스터 API를 이용하여 사용자가 보유하고 있는 모든 카드의 값을 웹 프로그램으로 확인해보자!!

#65 파이썬 스팀몬스터 API를 이용하여 카드 최저가 합산 프로그램 업그레이드!! 소팅 오류 수정 및 이미디 적용 완료!!

#66 파이썬 스팀몬스터 API를 이용하여 스팀몬스터 배틀 결과 정보를 출력해 보자!!

#67 오늘은 스팀몬스터 배틀 결과 정보를 확인할 수 있는 웹 페이지를 만들어 보자.

#68 스팀몬스터 배틀 결과 정보를 이미지로 보기 쉽게 만들어보자.

#69 스팀몬스터 API get_cards_stats()과 get_card_details()를 이용하여 리워드 카드 발매 수량을 확인해 보자!!

#70 스팀몬스터 리워드 카드의 발행량과 소각량을 웹 페이지에 출력해 보자.

#71 스팀몬스터 일일퀘스트 보상으로 받은 리워드카드의 정보를 웹 페이지에서 확인해 보자.

#72 스팀몬스터 일일퀘스트 보상으로 받은 리워드카드의 가치를 웹 페이지에서 확인해 보자.

#73 오늘은 트아 형님께서 만드신 나의 스팀 자산은? 프로그램을 웹 페이지로 확인할 수 있도록 만들어 보자!!

#74 나의 자산을 확인 하는 프로그램에 스팀파워 임대량 추가!!

#75 나의 스팀엔진 토큰들의 수량을 확인하고, 스팀 환 산 가치를 알아보자!!

#76 나의 스팀엔진 토큰들의 수량과 스팀 환산 가치를 웹 페이지에서 확인해 보자!!

#77 새로운 시작!! 파이썬 웹 프로그래밍을 위한 파이썬 웹 프레임워크 장고 설치 및 가동!!

Sort:  

장고 좋은데요. 연재 기대합니다.

Posted using Partiko Android

장고 진작에 공부해보는건데...

신세계로군요.

오~ 뭔가 멋진 툴이 나왔나보네요~ 장고 고고씽입니다! ^^

네... 옜날 기술밖에 안가지고 있는데...

새로운 것들은 항상 놀랍네요.

jcar토큰 10월 구독신청감사합니다. ^^
즐거운 하루 되세요.

Thank you for your continued support towards JJM. For each 1000 JJM you are holding, you can get an additional 1% of upvote. 10,000JJM would give you a 11% daily voting from the 700K SP virus707 account.

아~~~~ 놀아서 아프고 싶네요...

신나게 온몸을 불태워서 놀면 됩니다~ ㅎㅎㅎㅎ

Hi @goodhello!

Your post was upvoted by @steem-ua, new Steem dApp, using UserAuthority for algorithmic post curation!
Your UA account score is currently 4.012 which ranks you at #3993 across all Steem accounts.
Your rank has not changed in the last three days.

In our last Algorithmic Curation Round, consisting of 98 contributions, your post is ranked at #48.

Evaluation of your UA score:
  • Some people are already following you, keep going!
  • The readers like your work!
  • Try to work on user engagement: the more people that interact with you via the comments, the higher your UA score!

Feel free to join our @steem-ua Discord server

Coin Marketplace

STEEM 0.30
TRX 0.12
JST 0.032
BTC 60205.00
ETH 2994.41
USDT 1.00
SBD 3.90