728x90

프로젝트도 만들었고 프로젝트와 어플리케이션의 차이도 살펴보았다. 이번 포스팅에서는 프로젝트 안에 어플리케이션을 생성해 보도록 하자. 딱히 무엇을 만들겠다는 계획이 있는 것은 아니지만, 프로젝트가 큰 개념이고 어플리케이션은 프로젝트 안에 들어가 있는 기능집합의 개념이니, 그 컨셉을 따라가 보자는 것이다. 

어플리케이션의 생성도 프로젝트의 생성과 비슷하다. 사용하는 도구가 약간 달라지는 점에 주의하자. 프로젝트 생성시에는 django-admin 이라는 장고가 제공하는 도구를 사용했다면, 이번에는 프로젝트 안에 생성된 manage.py 를 이용하게 된다. manage.py 는 프로젝트를 브라우저에 한번 띄워볼때 사용했던 바로 그 도구다.


manage.py 를 이용하여
어플리케이션 생성하기

// 별 문제 없이 생성에 성공하면 아무런 메세지도 나오지 않는다. 당황하지 말자.
% python3 manage.py startapp myfirstapp

성공적으로 어플리케이션이 만들어지면 프로젝트 루트 경로에 어플리케이션 이름으로 디렉토리가 생성된 것이 보인다. 디렉토리 안에는 여러가지 장고와 관련된 파이썬 파일들과 디렉토리가 자동으로 생성된 것이 보인다. 각 파일이 무슨 역할을 하는지 알아보아야 하는데 머리가 지끈지끈 아파오는 것 같다.

 

프로젝트의 settings.py 를 편집하여
어플리케이션을 추가해보자

NoPD 는 친절하기 때문에 다시 한 번 이미지를 첨부했다. 처음 프로젝트를 생성했을때 프로젝트 이름과 동일한 디렉토리가 하위에 하나 더 만들어졌던 것을 기억 할 것이다. 기억이 안나도 기억 난다고 생각하자. 이 경로에 들어가면 settings.py 가 보인다. 대략 자동 생성된 파일들의 위치로 유추해 보건데, (필자 기준으로) nopd 경로 하위에는 프로젝트의 구성요소나 자원에 대한 정보들이 담기고, 각 어플리케이션 하위에는 어플리케이션과 관련된 설정 등이 들어가는 모양이다. (이렇게 자신있게 말하면 안되는데...)

settings.py

이 파일 안에는 여러가지 설정 값들이 있다. 쉽게 생각하면 장고 웹 프로젝트가 구동되는데 필요한 각종 값들 (경로, 패키지 네임스페이스 등) 을 가지고 있는 파일이다. 새로 추가한 어플리케이션을 프로젝트가 인식하려면 settings.py 에 추가되어야 하는 것이라는 감이 왔을 것이다. 빈 줄과 주석을 모두 제거하면 위와 같은 형태가 되는데, 11행에 있는 <INSTALLED_APPS> 가 우리의 퀘스트다.

INSTALLED_APPS 에는 프로젝트가 사용하는 어플리케이션들이 등록되어 있다. 기본적으로 장고가 제공하는 admin, auth 등 6가지가 추가되어 있는 것이 보인다. 마지막에 한줄을 추가하여 우리의 어플리케이션을 추가해주고 싶은데... 어떤 값을 넣어야 하는 것일까? 다시 우리가 만든 어플리케이션 디렉토리로 이동하여 하위에 생성된 apps.py 를 열면 답이 있다. 

자동으로 생성된 클래스에 name 이 지정되어 있는 것을 볼 수 있다. 이 이름을 가져다가 마지막에 추가해주는 것이 우리의 할일이다. 어렵지 않을테니 들여쓰기에 신경쓰고, 각 아이템을 나누어주는 콤마가 잘 들어갔는지 챙겨주자. 프로젝트의 코드 수정이라니... 뭔가 손에 땀이 나면서 흥미진진하다. 

추가된 우리의 첫 어플리케이션

오늘은 여기까지이다. 아직 갈길이 멀다. 이 프로젝트, 어플리케이션에서 뭘 할지를 정하지 못했기 때문이다 ;;;

장고는 프로젝트에서 데이터베이스를 다룰 수 있도록 Admin 페이지를 제공해준다. php 를 다루어 보았다면 들어보았을, 그리고 크래커들이 기본적으로 외부에 열려 있는지 탐색해보는 phpmyadmin 과 같은 역할을 해준다고 생각하면 된다. 여튼, 뭔가를 하려면 데이터베이스가 꼭 필요한데 우리는 아직 아무런 작업을 하지 않았다. 

다음 포스팅에서는 수퍼유저를 만들기 위해 데이터베이스를 초기화하고 기본 테이블을 만들어 보겠다. 그리고 혹시나 myfirstapp 이 무슨일을 할지 재미있는 아이디어가 떠오르게 되면, 구현에 필요한 테이블도 생성해 보도록 <최선을 다하겠다> 

728x90
728x90

프로젝트를 무사히 만들고 샘플 페이지도 브라우저에 띄워 보았다. 이어서 settings.py 라는 프로젝트에 대한 구조? 속성? 을 담고 있는 파일을 공부해볼까 하다가... 장고에서 사용하는 프로젝트 Project 와 앱 Application 의 개념을 한번 정리하고 넘어가는 것이 좋을 것 같아서 끊기 신공을 한 번 더 사용해볼까 한다.

우리가 이전 포스팅에서 만든것은 프로젝트 Project 이다. PMP 자격 시험을 본 적이 있거나 프로젝트 관리에 대한 수업을 들어 보았다면 프로젝트는 여러개의 서브 프로젝트로 나뉘어 질 수도 있고, 프로젝트들이 모여서 프로그램을 이루고 어쩌고 하는 이야기들을 들어보았을 것이다. 장고에서도 동일한 개념일까? 이럴때에는 가장 좋은 것이 공식 문서를 보는 것!

길다. 하지만 볼드체가 있으니 차근히 살펴보도록 하자. 첫 문장 가라사데, <프로젝트 Project 라는 용어는 장고 웹 어플리케이션을 말해>. 와닿지 않는다. 조금 더 읽어보면, <프로젝트라 불리우는 파이썬 패키지는 settings 모듈로 정의되긴 하지만 다른 것들도 많이 포함하고 있어> 라고 한다. 이후에 이어지는 명령과 생성되는 파일은 우리가 지난 포스팅에서 봤던 것들인데... 요약하면 프로젝트는 하나의 큰 패키지와 같은 것! 이라는 느낌이다. 

세번째 문단에 오니 앱 혹은 어플리케이션에 대한 이야기를 하고 있다. <어플리케이션 Application 이라는 용어는 몇 가지 기능을 제공하는 파이썬 패키지를 말해> 라니... 그 다음 문장에 재활용 가능하다는 것을 보면 <프로젝트를 구성하는 기능의 집합 단위를 어플리케이션이라고 함> 정도가 될 수 있을 것 같다. 

가령 커뮤니티 사이트를 만드는 프로젝트라고 하면, <커뮤니티 사이트> 자체가 프로젝트의 개념이고, 그 안에서 사용되는 <게시판>, <쇼핑몰>, <개인정보관리기능> 같은 것들이 어플리케이션이라고 보면 무난할 것 같다. 그렇다면 우리가 지난 포스팅에서 프로젝트를 만든 이후에 해야할 것은 무엇일까? 바로 어플리케이션을 만드는 것이다. 

그럼 다음 포스팅에서 프로젝트 하위에 어플리케이션을 만드는 것을 해보고, 그 다음에 settings.py 를 살펴보는 것으로 해보자. 순서야 어떻든 우리가 필요한 것을 잘 이해하면 되는 거니까...!!

 

Applications | Django documentation | Django

Django The web framework for perfectionists with deadlines. Overview Download Documentation News Community Code Issues About ♥ Donate

docs.djangoproject.com


이어지는 글들 살펴보기

 

Django, 파이썬 장고 - 프로젝트에 어플리케이션 생성하기

프로젝트도 만들었고 프로젝트와 어플리케이션의 차이도 살펴보았다. 이번 포스팅에서는 프로젝트 안에 어플리케이션을 생성해 보도록 하자. 딱히 무엇을 만들겠다는 계획이 있는 것은 아니지

ondemand.tistory.com

 

 

Django, 파이썬 장고 - 프로젝트 생성하기

파이썬에서 사용되는 웹 프레임워크 중 널리 사용되는 것이 장고 Django 와 플라스크 Flask 이다. 둘 다 장단점이 있겠지만 대략 어깨너머로 본 것과 바람을 타고온 이야기를 종합해보면 장고가 조

ondemand.tistory.com

 

728x90
728x90

파이썬에서 사용되는 웹 프레임워크 중 널리 사용되는 것이 장고 Django 와 플라스크 Flask 이다. 둘 다 장단점이 있겠지만 대략 어깨너머로 본 것과 바람을 타고온 이야기를 종합해보면 장고가 조금 더 강력하고 무거운 것 같다. 반면 플라스크는 조금 가볍고 빠르게 웹 기반 산출물을 만들기 좋은 듯 하다. 아니라고? 아니어도 어쩔 수 없다. 파이썬도 잘 모르지만 파이썬의 웹 프레임워크도 아직 잘 모른다. ;;

어찌되었건 근래에 다루고 있는 코드가 장고 기반이라 하나하나 부딪혀가며 과제를 진행시키고는 있지만 밑바닥부터 한번 정리하면서 장고에 대한 지식을 정리해 보고자 한다. 이미 장고를 많이 다뤄본 사람이라면 굳이 읽지 않아도 되는 초보자의 공부 이력이니 응원의 하트나 댓글 정도를 남겨주면 좋겠다. :-)


장고 프레임웍의 설치

장고 프레임웍이 로컬 환경에 설치되어 있다는 것을 가정했다...라고 적다가 혹시 모르니 pip 를 이용해서 장고 패키지를 설치하고 확인하는 절차를 정리해 본다. (...라고 적지만 나중에 까먹을까봐 적어둔다. 나이들어봐라, 기억력이 팍팍 감소한다 ㅜㅜ) 

// 장고를 설치한다. jango 가 아니다, django 다
% pip3 install django

// 설치가 잘 되었는지 확인한다
% python3 -m django --version
2.2.6

물론, Symlink 등이 걸려 있어서 pip3 대신 pip 일수도 있고 python3 대신 python 이나 py 일수도 있다. 각자의 환경에서 동작하는 무언가가 있을테니 잘 찾아서 장고 프레임웍을 설치하면 된다. python3 를 쓰는 것이 좋은데 아마도 새로 시작하면서 2 를 쓰는 경우는 없을거라 생각한다.

 

프로젝트 생성

장고가 설치되었다면 django-admin.py 혹은 django-admin CLI 도구를 이용하여 프로젝트 생성을 할 수 있다. 물론, 이 도구는 더 많은 것들을 제공하는 장고 관리의 총아이니 앞으로도 종종 이 도구의 명령을 언급하게 될 것인다. 

// 명령도 참 많다. 심지어 Core Command 만 모아서 보여준거라는 친절한 안내가 같이 나와 있다
% django-admin
Type 'django-admin help <subcommand>' for help on a specific subcommand.

Available subcommands:

[django]
    check
    compilemessages
    createcachetable
    dbshell
    diffsettings
    dumpdata
    flush
    inspectdb
    loaddata
    makemessages
    makemigrations
    migrate
    runserver
    sendtestemail
    shell
    showmigrations
    sqlflush
    sqlmigrate
    sqlsequencereset
    squashmigrations
    startapp
    startproject
    test
    testserver
Note that only Django core commands are listed as settings are not properly configured (error: Requested setting INSTALLED_APPS, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.).

프로젝트를 시작한다를 영어로 표현하면? startproject 이다. 띄어쓰기는 어디갔을까? 라고 태클은 걸지 말자. 위의 코드 블럭에 붙여 놓은 것처럼 startproject 로 붙여 써야 한다. 영어 수업시간이 아니라 장고 수업시간이니 그렇구나 하고 넘어가자! ㅎㅎ 그럼 프로젝트를 만들고 무엇이 생성되는지 확인해 보자

// 현재 경로는 ./dev/django-study 다. 
% django-admin startproject nopd

 

nopd 라는 폴더가 생성되고 그 안에는 manage.py 가 있고 또 동일한 이름의 폴더 nopd 가 생성되었다. 하위 경로에 생성된 nopd 폴더 하위에는 4개의 python 파일이 생성되었다. 프로젝트에 대한 전반적인 정보를 담고 있는 파일이 settings.py 인데, 프로젝트의 시작은 이 파일에 필요한 내용들을 기술하는 것에서 시작된다고 한다.

폴더명이 동일하게 두개가 생성되는 등 시작부터 뭔가 마음에 들지 않는다. 하지만 먹고 살기 위해서는 장고를 잘 익혀둘 필요가 있으니 절단 신공으로 settings.py 설정에 대한 내용은 다음 포스팅에서 이어가 보도록 하겠다. 다들 알지 않는가? 시작이 반이다. 다만 맨날 시작만 해서 문제지만... 끝까지 함 가보자. 아, 기왕 여기까지 온 김에 실행이라도 한번 해보자!

 

개발용 웹 서버로
장고 프로젝트 실행하기

 

// manage.py 를 이용하여 개발 서버를 실행할 수 있다
% python3 manage.py runserver
Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).

You have 17 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.

October 30, 2020 - 07:37:06
Django version 2.2.6, using settings 'nopd.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

브라우저를 열고 http://127.0.0.1:8000/ 으로 접근하면 아래와 같은 화면을 볼 수 있다. 이야기 했지 않은가? 시작이 반이라고. 벌써 브라우저에 뭔가가 나오기 시작하는 것이 가슴이 웅장해지는 느낌이 들 것이다. 필자도 그랬다. 그런데 가슴만 웅장해지면 안되지 않겠는가? 우리는 계속 공부를 해나가야 한다. 학창시절에 그랬던 것처럼... 

 

 

Django 개발 환경 세팅하기

이제 장고가 무엇인지 알았으니, 윈도우, 리눅스(우분투), 맥 OS X에서 어떻게 장고 개발환경을 세팅하는지, 설치 후에는 어떻게 테스트하는지 살펴보겠습니다. 즉 이 문서를 통해서는 사용하

developer.mozilla.org


이어지는 글들...

 

Django, 파이썬 장고 - 프로젝트와 앱은 어떻게 다른가?

프로젝트를 무사히 만들고 샘플 페이지도 브라우저에 띄워 보았다. 이어서 settings.py 라는 프로젝트에 대한 구조? 속성? 을 담고 있는 파일을 공부해볼까 하다가... 장고에서 사용하는 프로젝트 Pr

ondemand.tistory.com

 

 

Django, 파이썬 장고 - 프로젝트에 어플리케이션 생성하기

프로젝트도 만들었고 프로젝트와 어플리케이션의 차이도 살펴보았다. 이번 포스팅에서는 프로젝트 안에 어플리케이션을 생성해 보도록 하자. 딱히 무엇을 만들겠다는 계획이 있는 것은 아니지

ondemand.tistory.com

 

728x90
728x90

업무에 따라 다르겠지만 개인적으로는 DNS 에 대한 핸들링이 무척 많이 필요합니다. 커맨드라인에서 Shell 스크립트를 이용해서 여러가지를 만들어 사용하고 있긴 하지만, 가능하면 Python 이나 node.js 로 필요한 기능을 만들어 사용하는 것이 좋지 않을까 생각하고 있었습니다.

Python 쪽에서 사용할 수 있는 DNS 패키지가 어떤것이 있는지 살펴보다보니 `dnspython` 이라는 걸출한 물건이 있는 것을 발견했습니다. 패키지 공식 페이지에서 이야기 하는 것처럼 dnspython 은 DNS Toolkit 을 표방하고 있습니다. 정말 많은 기능들을 제공하고 있기 때문에 DNS 관련한 도구 개발에 무척 도움이 될 것 같습니다. 

간단하게는 Resolver 역할을 수행하는 것에서 시작할 수 있고, 좀 멀리 나가면 Zone 에 대한 핸들링도 수행할 수 있는 것 같습니다. 개인적으로 사용해 본 내용이 Resolver 중심이고 도메인 이름에 대한 핸들링 정도여서, 실제 필요한 과제에 맞도록 Research 는 조금 더 해봐야 할 것 같습니다. PyPi 에 패키지가 등록되어 있기 때문에 pip 로 패키지를 설치하면 편리하게 사용해 보실 수 있습니다. 

 

dnspython | dnspython

17 July, 2020 at 06:30 PDT Dnspython 2.0.0 is now available on PyPI. See “What’s New” for all the features in this major release. Thanks to the many people who have contributed to this release! Python 2.x support ended with 1.16.0. Dnspython 2.0.0 re

www.dnspython.org

 

728x90

+ Recent posts