2018-01-29 TIL WPS 16. Django-1

공개키 암호화 기법

평문 -> 개인키 -> 암호화된 문자열 -> 공개키 -> 평문

평문 -> 공개키 -> 암호화된 문자열 -> 개인키 -> 평문

Alice
Alice의, 공개키 Alice의, 개인키

Bob
Bob의, 공개키 Bob의, 개인키

  • 통신과정

Alice -> Bob에게 통신 공개키 요청과정(암호화 필요없음) Alice -> Bob에게 요청(너의 공개키를 줘) -> 보내줌

  • 암호화 과정

평문 -> Alice가 Bob의 공개키로 암호화 -> Bob의 개인키로만 풀 수 있는 암호화된 문자열 -> 이 암호화된 문자열을 풀 수 있는건 오직 Bob -> Bob은 자신의 개인키로 복호화 -> 평문

  • Man-in-the-middle attack (중간자 공격)

Alice가 Bob에게 공개키를 요청 -> Alice가 Bob이라고 생각하도록 Mallory가 통신을 가로챔 -> Mallory가 자신의 공개키를 Alice에게 줌 -> Alice는 그 공개키가 Bob의 것이라 생각함 -> Mallory는 자기가 Alice인 척 Bob에게 공개키를 요청 -> Bob은 Alice라고 생각한 Mallory에게 자신의 공개키를 전송

프론트엔드 이야기

Angular1.x -> ReactJS -> Angular2, ReactJS, VueJs

Angular2는 자바스크립트, 타입스크립트 둘다 알아야함, 진입장벽은 높지만 배우고나면 정말 좋음. 유지보수가 편함.

ReactJS, VueJS는 취업용으로 좋음. ReactJS가 Angular1.x에서 옮겨오면서 많은 회사들이 사용중이므로 취업하고 싶으면 ReactJS. 새로 시작하는 회사나 창업이라면 VueJS를 추천.

한가지 언어를 이미 마스터했다면 새로운 언어를 배우는데는 한 달밖에 걸리지 않는다. 하지만 프레임워크는 손에 익는데 6개월까지 걸림. 그러므로 프레임워크를 잘 고르는게 중요하다(?)

Django 시작하기

브라우저에서 HTTP요청 -> DNS -> IP -> request -> 서버컴퓨터에 도차 -> 서버컴퓨터의 웹 서버 프로그램이 해당 요청을 받음 -> 웹 서버 프로그램은 웹 애플리케이션에 요청에 대한 응답의 제작을 요청 -> 웹 에플리케이션은 요청에 대한 응답을 동적으로 생성해서 웹 서버에게 돌려줌 -> 웹 서버는 자신이 요청하고 받은 응답을 다시 사용자에게 전송 -> 브라우저에서 해당 결과를 봄

여기서 웹 애플리케이션이 장고

가상환경 설정하고 장고 설치하기

  1. projects폴더에 django/djangogirls_tutorial 폴더 생성
  2. pyenv local fc-djangogirls 가상환경 설정
  3. git init
  4. .gitignore 작성(Django, Pycharm-all, macOS, git) - gitignore.io
  5. PyCharm에서 이 프로젝트 열고 Project interpreter를 fc-djangogirls로 설정
  6. pip install django
  7. django-admin startproject mysite

폴더 수정

그 바깥쪽에 있는 폴더는 django로 바꾼다. 패키지 이름(__init__.py 파일이 있는 있는 폴더 = 패키지)은 config로 바꾼다. 반드시 refactor로 바꾼다. (바깥쪽 폴더 django를 바꿀 때는 serch for references, search in comments and strings의 옵션을 해제함) django폴더는 우클릭해서 Mark Directory as Source Root로 설정 (패키지로서 사용하는 것이 아니라 단순히 Sources Root로만 사용되도록 함, 설정을 안하게 되면 import가 이상하게 되고 파이썬이 동작하지도 않음)

settings.py 수정

TIME_ZONE = ‘Asia/Seoul’

특정 지역에서 데이터가 저장되는 시간을 설정. 표시되는 시간에도 영향을 줌. 시차가 있는 외국의 브라우저에서 접속 할 때 서버의 시간에서 계산을 하도록 하는 기준이 됨.

runserver 실행

$ python manage.py runserver

http://127.0.0.1:8000에 들어가본다.

image

위와 같은 화면이 뜨는 것을 확인한다.

pip list 저장하기

내가 만든 프로젝트들의 환경들을 저장해주어야 나중에 환경이 바뀐 곳에서도 필요한 버전, 환경등을 다시 참고하고 복원할 수 있다.

$ pip freeze > requirement.txt

장고 앱 생성

$ python manage.py startapp blog

blog라는 장고앱을 생성한다. 위 명령어를 입력하면 blog 패키지가 생성된 것을 알 수 있다. 장고에서는 패키지 = 앱이라고 생각

settings.py에 INSTALLED_APPS에 blog를 추가해준다. 장고의 여러가지 패키지 중에 앱으로 관리되는 패키지를 지정해야주어야함. image

model.py 작성

장고에서의 모델은 객체의 특별한 종류인데, 클래스를 만들면 그 내용이 데이터베이스에 저장이 된다. 클라스 하나는 같은 형태의 데이터를 저장할 수 있는 테이블 하나를 의미한다.

다음과 같이 model.py에 작성한다. #는 설명이 있는 부분

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

class Post(models.Model): #
    author = models.ForeignKey('auth.User', on_delete=models.CASCADE,) #
    title = models.CharField(max_length=200)
    content = models.TextField(blank=True)
    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클래스 : 데이터베이스의 테이블 정의. 파이썬에서 클래스의 첫글자는 대문자로 쓰는게 원칙
  • models.Model : models.Model의 클래스를 상속받는데, 역할은 Post 클래스안에 정의한 속성들이 데이터베이스의 형태를 결정하게 한다.

author, title, content, created_date, published_date = DB의 column
각 column에 저장되는 내용은 row 또는 record라고 함. 엑셀로 생각하면 됨.

default

  • save() : 메모리에 올라와있기만 한 데이터를 데이터베이스에 기록하기
  • on_delete=models.CASCADE : 연결된 계정의 내용까지 삭제되는 기능
  • migrate : 데이터베이스 적용하기

migrate

모델에 대한 변경사항 저장

$ python manage.py migrate

makemigrations

migrations 패키지를 생성함

$ python manage.py makemigrations

0001_initial.py를 보면 Post클래스로 만들어준 속성들이 나타나있는 것을 알 수 있는데 실제 데이터베이스에 적용될 수 있도록 함.

Sqlectron

SQL (추후 내용 추가)

Django Tutorial(history)

1월 29일

  1. 장고 설치 하고 runserver 띄우기
  2. blog app추가 및 Post model추가
  3. blog app을 INSTALLED_APPS에 추가, Post모델의 migration 생성 및 admin에 등록

Comments