2019.04.24 장고 앱 설치 이후 간단한 뷰 만들어 url 연동시켜보기

(TIL은 스스로 이해한 것을 바탕으로 정리한 것으로 오류가 있을 수 있습니다)

# 질문에 답하기

  1. 장고 프로젝트 과정 설명하기

간단한 뷰를 만들어 url 연동시켜보기

간단한 뷰 만들기

polls/views.py

from django.http import HttpResponse


def index(request):
    return HttpResponse("Hello, world. You're at the polls index.")

뷰와 연결될 URLconf 생성하기

polls/urls.py 생성

from django.urls import path

from . import views

urlpatterns = [
    path('', views.index, name='index'),
]
  • 127.0.0.1/polls 에 관련된 주소 url이 오면 views.index를 보여줘라
  • 그 상위 urls.py를 설정해서 연결시켜줘야한다.

cofig/urls.py 연동

from django.contrib import admin
from django.urls import include, path

urlpatterns = [
    path('polls/', include('polls.urls')),
    path('admin/', admin.site.urls),
  • include는 전달해라 (127.0.0.1)/polls/에 관련된 것이 오면 polls.urls로 전달해라
  • (127.0.0.1)/admin 이 오면 admin.site.urls로 연결해라

실행

  • python manage.py runserver
  • 127.0.0.1:8000/polls
  • “Hello, world. You’re at the polls index.” 가 나오는 것을 확인할 수 있다.
 

2019.04.23 장고프로젝트 시작하기

(TIL은 스스로 이해한 것을 바탕으로 정리한 것으로 오류가 있을 수 있습니다)

# 질문에 답하기

  1. 장고 프로젝트 과정 설명하기

장고 프로젝트 시작하기 by 장고 튜터리얼

목표

  • 사람들이 설문 내용을 보고 직접 투표할 수 있는 개방된 사이트 구성
  • 관리자가 설문을 추가, 변경, 삭제할 수 있는 관리용 사이트 제작

장고 프로젝트 시작하기

  1. 가상 환경 생성
    1. 프로젝트 마다 언어 혹은 모듈의 버전이 달라질 수 있다.
    2. 하나의 환경안에는 똑같은 모듈이라고 했을 때 한가지 버전만 설치 가능하다.
    3. 각각의 프로젝트마다 버전을 다르게 해주기 위해 가상환경을 생성한다.
  2. 장고 설치
    1. 각각의 프로젝트에 맞는 장고 버전 설치
  3. 장고 프로젝트 생성

1. 가상 환경 생성

가상 환경 생성

  • virtualenv : 파이참에서 기본적으로 지원
  • venv : 파이썬3.4부터 기본적으로 탑재

 파이썬가상환경 virtualenv, venv - 제타위키

  • virtualenv
    • pip3 install virtualenv
    • virtualenv –python = python3.7 venv
    • venv라는 가상환경 생성
  • venv
    • python3 -m venv myvenv
    • myvenv라는 이름의 가상환경 생성

가상 환경 실행

  • virtualenv
    • source venv/bin/activate
  • venv
    • source myvenv/bin/activate

가상환경 비활성화

  • deactivate

2. django 설치

  • 가상환경 내에서는 virtualenv & venv 모두 공통

장고 설치하기

  • virtualenv & venv 공통
    • pip install django == 2.1

3. django project 시작하기

프로젝트 생성하기

  • django-admin : 장고 매니저
  • django-admin startproject config . : “.”은 현재 나의 디렉토리에 생성한다.
    • config라는 폴더가 생기고 그 안에 설정 파일들이 생긴다.
    • config 파일은 설정 폴더라고 생각하고 만들면 된다.

프로젝트 생성 이후 폴더 설명

  • settings.py : 설정 값을 저장 파일
    • 크리티컬한 정보는 user 설정값, 별도 파일에서 부러온다.
  • 페이지
    • 화면이 보이는 페이지는 페이지로
    • 화면이 보이지 않는 페이지 - 기능
  • urls
    • 기능이나 페이지를 이용한다 : 접속한다. 즉 url이 필요하다
    • 주소 설계 내용을 저장하는 곳 urls.py
    • 1개가 아니라 여러개다.
    • 라우팅을 한다.
    • www.naver.com/blog/flashmaestro?docN
  • middleware
    • 미들웨어란 무엇일까요?
    • 웹 서버와 장고 애플리케이션 사이에서 동작하는 기능(보안관련)
    • 크루 로봇이 항상 깨어있으면서 유연하게 대처함
    • WSGI 방식 : Gunicon, UWSGI
    • 접속자 추정

프로젝트 내 앱 생성하기

  • python manage.py startapp [앱이름]

장고 앱 설명

  1. 장고는 재사용이 가능한 형태로 구성된다.
    1. 내가 만들어 놓은 게시판을 다른 장고 프로젝트에서도 빌려서 쓸 수 있다.
    2. 기능들의 단위는 앱이라는 단위로 끊어서 만든다.
    3. 앱은 재사용을 위해서 만드는 기능 단위이다.
    4. 어떤 페이지나 기능을 만들기 위해서는 앱을 만들고 그 안에 만든다.
    5. 기능 단위에는 정답이 없다. 내가 쪼개기 나름이다.
    6. 만약에 내가 재사용할 일이 없으면 한개의 앱안에 다 만들어도 되나, 내가 앞으로 프로젝트 할 때 이 관련 기능을 많이 쓸 것 같으면 반드시 하나의 앱으로 나누어야 한다.
  2. 앱이름으로 폴더가 생성된다. (by polls)

polls/ __init__.py admin.py apps.py migrations/ __init__.py models.py tests.py views.py

  1. migrations 폴더 : DB 변경 사항 이력 파일들
    1. 언제든지 전으로 돌아갈 수 있도록 이력 관리를 해준다.
  2. admin.py : 모델을 관리하기 위해 등록, 관리자 페이지 커스터 마이징
  3. apps.py : 앱 정보 관리, 앱 진입시 로드할 기능 관리
  4. models.py : 모델을 만들고 관리하는 부분
    1. 모델은 데이터베이스에 어떤 자료를 어떤 형식으로 저장할 것이냐에 대한 결정
      1. 데이터베이스 언어는 SQL
      2. 각 데이터베이스마다 쿼리문이 다르다.
      3. 따라서 만약에 데이터베이스를 바꿀 때 마다 그 쿼리문을 다 바꿔주어야 한다.
      4. 그 부담감을 줄여주기 위해 ORM이라는 것이 나옴
        1. 데이터를 객체에 맵핑하는 것
        2. 객체에 쓸 쿼리문을 맵핑해놓으면 알아서 ORM이 바꾸어서 요청해줄게.
      5. ORM 기법을 이용해서 모델을 작성할 것이다. (by class)
  5. tests.py : 테스트 셋을 지정하는 파일 - TDD
    1. 어플리케이션의 사용성을 보장하는 방법
      1. 모든 부분 마다 테스트코드를 작성하여 돌아가는지 확인
      2. 기능을 하나를 추가하거나 변경하면 다른 기능에 영향을 안 받아야 한다.
      3. 하지만 이것에 대해서 보장을 해줄 수 없다.
    2. TDD는 이것을 하면 이것이 나와야 되라는 테스트 셋을 만들어놓고 자동으로 프로그램이 돌려준다. 그래서 문제가 없으면 보장하는 방법을 TDD라고 한다.
  6. views.py : 페이지나 기능을 코딩하는 파일

2019.04.19 장고시작하기

(TIL은 스스로 이해한 것을 바탕으로 정리한 것으로 오류가 있을 수 있습니다)

# 질문에 답하기

  1. 장고란 무엇인가?

장고란

파이썬으로 작성된 오픈 소스 웹 애플리케이션 프레임워크로 모델 - 뷰 - 컨트롤러(MVC) 패턴을 따르고 있다.
고도의 데이터베이스 기반 웹사이트를 작성하는데 있어서 수고를 더는 것이 장고의 주된 목표!
컴포넌트의 재사용성과 플러그인화 가능성 빠른 개발등을 강조하고 있다.

  • 컴포넌트 : 소프트웨어 시스템에서 독립적인 업무 또는 독립적인 기능을 수행하는 모듈로서 이후 시스템을 유지보수하는데 있어 교체가 가능한 부품
  • 플러그인 : 웹 브라우저의 표진 기능을 확장해주는 프로그램을 의미한다.(flash, pdfreader등)

장고의 특징

  1. MVC 패턴 기반 ( Model - View - Controller)
    1. 장고에서는 view를 Template, Controller를 View라고 부르므로 MTV 프레임워크라고 부르기도 한다.
  2. 우아한 URL 설계
    1. URL형태를 개발자가 직접 결정할 수 있고 각 URL형태를 파이썬 함수에 직접 연결하도록 되어 있어 개발이 편리하고 이해하기 쉽다.
  3. 관리자 웹 인터페이스 제공
    1. 사용자 관리, 사용자 그룹관리, 권한 뿐만 아니라 모델 객체에 대해서도 목록, 추가, 삭제, 변경의 기능이 관리자 인터페이스에서 모두 제공되어 웹 어플리케이션을 실험해보기에 좋다.

장고 시작하기

프로젝트 할 폴더 생성

  • mkdir djangoproject
  • cd djangoproject

가상 환경 설치 및 실행

  • 장고의 경우 각 프로젝트에 맞게 버전을 설정하여 관리하기 위해 가상 환경 위해서 진행해주는게 좋다.
  • python3 -m venv myvenv : myvenv라는 가상환경 설치
  • source myvenv/bin/activate : myvenv / bin 폴더의 activate 실행 (가상환경실행)

가상 환경 내에서 django 설치

  • pip install django~=2.0.0 (가상 환경위에서는 자동으로 python3가 잡히므로 pip3 해줄필요 없음)

프로젝트 시작하기

  • django-admin startproject mysite . : mysite라는 프로젝트 시작
  • mysite라는 폴더 생성

  • 위와 같이 진행하고 나면 위의 구조로 파일이 생성된다.

데이터베이스 설정

  • python3 manage.py migrate : 현재 장고 프로젝트에서 데이터베이스를 어떤 식으로 저장할지에 대한 자동설정
  • python manage.py runserver : 장고 서버 시작

이까지 진행하면 장고 서버를 시작하여 웹사이트 운영을 시작할 단계가 되었다.

  • 다음부터는 장고의 MVC 패턴 기반 ( Model - View - Controller)에 맞추어서 하나씩 추가적으로 설명해보려고 한다. django 02. 에서 Model에 대해 추가적으로 알아보자!

+ Recent posts