'python/Centos-django'에 해당되는 글 4건

  1. 2015.05.04 1차 완성 결과물
  2. 2015.05.04 2일차 -2
  3. 2015.05.04 2일차 django 학습 및 프로젝트 생성
  4. 2015.05.04 1일차 프로젝트 개요 - 환경 구성

처음 예정 했던 기한에 완성 된 결과물입니다.


게시판을 만들려고 했지만 기본적인 글 쓰기,수정 이외에는 지원 되지 않습니다.

댓글 까지 구현하기는 시간이 빠듯 하더군요.


게시판 리스트 출력 페이지 입니다. board List로 현재 페이지를 알 수 있습니다.

차후 게시판 추가 삭제, 수정 기능을 추가 할 예정입니다.


 상단의 게시판 목록에서 게시판을 클릭하면 해당 게시판의 게시글들을 볼 수 있습니다.

글쓰기가 가능하고 현재 접속한 게시판의 이름을 확인 가능합니다.



게시글 쓰기 화면 입니다. Form.py를 적용 시켰습니다. label과 textfild에 ID값을 줘서 css적용도 가능합니다.



내용 출력 화면 입니다.

기본적인 건 처리 되었으나 \n을 <br>로 치환할 경우 HTML코드로 적용 시키지 않고 그대로 출력 시키는 문제가 있습니다.


수정 페이지 입니다. 기본적으로 입력과 같은 폼을 사용하고 데이터를 받아서 input 창에 띄웁니다.


'python > Centos-django' 카테고리의 다른 글

2일차 -2  (0) 2015.05.04
2일차 django 학습 및 프로젝트 생성  (0) 2015.05.04
1일차 프로젝트 개요 - 환경 구성  (0) 2015.05.04
Posted by EONES
,

2일차 -2

python/Centos-django 2015. 5. 4. 21:52

생각보다 내용이 길어져서 2개로 나누기로 했습니다.


일단은 template 등록을 알려 드렸으니

등록된 template를 화면에 출력할 수 있도록 url접근을 처리해줘야겠죠.

라고 하고 싶은데 app생성도 안했네요...




djangoprj 폴더에 가시면

urls.py라는 파일이 존재합니다.

여기에 py파일을 통째로 include하는 방법도 있고

직접 입력해서 쓰는 방법이 있는 데,

이 번 프로젝트는 규모가 작은 프로젝트라 가볍게 직접 입력했습니다.


내용을 보시면 urlpatters도 일종의 변수처럼 =으로 대입 됩니다.

그러니까 +=을 이용해서 추가해서 덧 붙일 수 있다는 얘기죠

patterns 괄호를 열고 첫번째 ague는 해당 뷰를 import해야될  py 파일을 지정합니다.



게시글 목록입니다. 게시판 목록과 마찬가지로 상단에 django MVC 게시판이라고 출력되고

하던에 Thanks for visiting이 출력되는 걸 확인 하실 수 있습니다.

해당 페이지의 코드를 보겠습니다.


실제 페이지를 출력 하기 위해서 매핑과 처리가 되어있어야 겠죠?

views.py 내용 중 aritcles페이지를 위한 부분입니다.

전 디자이너가 아니기 때문에 디자인 능력이 개똥이기 때문에 디자인적 요소를 빼고 출력만  정상적으로 되고 직관적으로 확인 가능한 코드를 짰습니다.

div를 넣거나 table만 넣으면 디자인도 금방 됩니다!


'python > Centos-django' 카테고리의 다른 글

1차 완성 결과물  (0) 2015.05.04
2일차 django 학습 및 프로젝트 생성  (0) 2015.05.04
1일차 프로젝트 개요 - 환경 구성  (0) 2015.05.04
Posted by EONES
,


설치, 학습과 관련해 도움 받은 페이지들

http://itekblog.com/installing-python-django-on-centos-6-3-is-easy/ -- 해외 블로그 입니다...
http://heiswed.tistory.com/entry/%EC%9E%A5%EA%B3%A0Django-%EA%B0%9C%EB%B0%9C-%EB%AA%A8%EB%8D%B8Model
- 간략하게 django MVC에 대해 볼 수 있었습니다.
Redhat Develper Blog
- 두번 째 시도한 방법으로 Redhat 계열에서 python 2.7과 pip,django를 쉽게 인스톨 하는 방법을 소개 하고 있으나
scl enable python27 bash 를 os를 켤때마다 또는 ssh로 접근 할 때 마다 입력해야되는 문제가 있습니다. bash를 조정하는 방법이 있는데 저는 bash만지다가 터졌습니다.
http://jamesreubenknowles.com/installing-django-on-centos-1831
- 해외 블로그인데 2.6.6버전용 django를 yum repository로 받는 방법이 있습니다. 저는 이 방법으로 했습니다.
http://greenfishblog.tistory.com/ - 설치를 제외한 거의 모든 걸 여기서 공부한 거 같네요



이 페이지는 상당수의 내용을 스킵하고 있습니다.

보다 상세하고 절차적인 내용은 차후 django 카테고리에서 다루겠습니다.




django가 설치된 linux에서



 django-admin help

를 입력 하면 django 패키지의 django-admin.py 파일이 실행되고 help인수를 받아서

사용 가능한 인수들을 출력 해 준다.


django와 mysql이 설치 된 상황에서 django project를 시작 해 보겠습니다.


 mkdir /opt/webapps

 cd /opt/webapps

 django-admin startproject djangoprj

 저는 /opt/webapps 폴더를 생성하여 그 하위에 장고 프로젝트를 생성했습니다.

django-admin startprojcet 까지가 django 프로젝트를 생성하라는 명령이 되고

djangoprj는 사용자가 임의로 입력하는 프로젝트 명이 됩니다.


 django-admin startproject 프로젝트이름

의 구조 입니다.


프로젝트가 생성명령을 내리면


프로젝트이름-프로젝트이름-환경설정파일들

              -프로젝트 관리파일


구조로 생성됩니다.


전 이미 프로젝트를 진행해서 현재는 프로젝트 안에서 앱까지 생성되어 있어서 구조가 조금 더 복잡합니다.




putty에서 tree 명령어를 실행한 모습니다.

 *tree repository는 별도로 yum으로 설치 해줘야 사용 가능합니다.



프로젝트 최상위 폴더는 프로젝트 이름으로 된 폴더와 manage.py 파일을 가지고 있습니다.

django는 자체적으로 웹서버를 구동시킬 수 있으며 db와 sync 또는 프로젝트 상의 shell을 실행 시킬 수 있습니다. 여기서 자주 쓰는 명령어만 간단히 말씀 드리겠습니다.


python manage.py 명령어

구조 입니다.

* python manage.py runserver IP주소:포트번호

ip주소와 port번호가 생략될 경우 자동으로 127.0.0.1:8000으로 서버가 실행됩니다.

gnome환경에서 로컬로 확인하실 거라면 그냥 runserver만 이용하시면 됩니다.


* python manage.py shell

개인적으로 가장 많이 쓰게 되는 명령어더군요. django 가 실행되면 어디서 왜 에러가 발생하는지는 보여주지만 직접 커맨드를 입력해보는 게 제일 확실하게 알기 좋더군요.

다만 shell을 실행할 때마다 import를 다시 해줘야합니다.

한번 shell 실행하고 필요한 것들 다 import 하고 putty를 아예 shell용으로 하나 더 켜 놓는 걸 추천합니다.


*python manage.py syncdb

 명령어대로 syncdb 현재 설정된 db와 models의 테이블 컬럼을 맞추라는 명령어입니다.

존재하지 않는 테이블을 생성하지만, 테이블을 삭제하거나 수정하진 않는다고 합니다.

 저도 일단 생성하고 수정해봤는데 컬럼명 충돌이 나더군요. 

당일 공부해서 당일 만든거라 아직 공부가 부족합니다. 


*python manage.py sqlall 앱이름.models

모델이 생성하는 테이블 쿼리를 확인 가능합니다.


*python manage.py validate

현재 프로젝트 내에 코드들이 유효한지 검사해줍니다만

당연하게도 런타임 에러는 잡아주지 못합니다.



[root@centos djangoprj]# python manage.py validate

0 errors found

[root@centos djangoprj]# python manage.py runserver

Validating models...


0 errors found

Django version 1.4.20, using settings 'djangoprj.settings'

Development server is running at http://127.0.0.1:8000/

Quit the server with CONTROL-C.



validate와 runserver를 실행할 경우 위와 같이 뜹니다.

에러가 없기 때문에 0에러 파운드가 뜨고

서버를 실행할 경우 현재 django의 버전과 사용하고 있는 프로젝트 세팅 파일

그리고 현재 서버가 돌아가고 있는 IP주소와 포트번호가 확인 가능합니다.

ctrl+C를 누르면 서버는 정지되고 터미널로 돌아 갈 수 있습니다.


처음 프로젝트를 만들자 마자 runserver를 실행하면 django에서 제공하는 default페이지와 admin 페이지가 접근 가능합니다만. 저는 다 스킵 했습니다. 2일만에 리눅스 설치부터 해서 어디 까지 만드나가 목적이었거든요. 하루를 리눅스 설치로 날려서 하루만에 게시판 만들기 도전이 됐지만 말이죠


다음은 template 설정입니다.

**django에서 template는 HTML등 실제로 유저가 보게될 화면을 구성하는 파일 들을 얘기합니다.

**view는 화면들을 제어 하는 일종의 Controller라고 생각하시면 편하고

**Models는 DB와 연동될 데이터를 제어하는 부분입니다.


일단 화면이 나와야 뭐가 돌아가나 안 돌아가나 보이기 때문에 template와 view 설정을 먼저 합니다.



*** 지금 부터 프로젝트 이름을 [prjnm]이라고 하겠습니다.


[prjnm]하위 폴더인 [prjnm]을 들어와서 ls명령어로 폴더와 파일을 보고 있습니다.

보라색으로 뜨는게 폴더들입니다.

기본적으로는 폴더가 없이 설정 파일들만 있습니다.

그럼 이제 여러분이 html 파일을 넣을 폴더를 여기 생성해주세요

이름은 편하신대로 해도 됩니다. 직접 설정하면 되거든요.


vi setting.py 를 하시면 다음과 같은 구문이 있습니다.

보시기 편하시라고 vim으로 열었습니다. 저는 110라인이네요

template_dirs =  해서 안에 등록된 폴더들이 template로 등록 되는 형태입니다만.

template를 하나 만들고 그 안에 세부 폴더를 만들어서 관리 하는게 보통일꺼라 생각됩니다.


저는 os.path를 import해와서 현재 디렉토리에 있는 templates를 적용 시키게 했습니다.

os.path.dirname(__file__)은 __file__은 현재 파일을 가리키고 dirname으로 현재 파일이 있는 폴더 이름을 가져오는 형태입니다. os.path.join은 현재 디렉토리 이름에 2번째 ague를 join해주는 함수고요

shell에서 print os.path.dirname(__file__)을 실행해보시면 쉽게 이해 되실 겁니다.

replace는 윈도우에서 필요한 건데 그냥 해놨습니다.



제 templates 트리구조입니다. 게시판 구현만이 목적이라 딱히 다른 게 없습니다.


그럼 이제 안에 HTML 구조를 보겠습니다.

django에서는 html이 마치 클래스처럼 다른 html파일을 상속가능합니다.

그래서 base.html을 기본 틀이 되는 html코드를 가진 파일이고

나머지 html 파일들은 {% extends %}로 파일을 지정해서 html코드를 상속 받습니다.



 

base.html 과 list.html

왼쪽은 base.html파일로 변경되지 않을 부분은 html코딍이 되어있고, 변경될 내용이 들어갈 수 있는 부분은 {% block %}으로 정의 되어있습니다.

간단하게 {% block 변수명 %} 블록 시작

내용

{% endblock %} 블록 닫기

구조로 되어있다고 생각 하시면 됩니다.


base.html에  블록 내에 내용이 있고 list.html과 같이 extends 하는 페이지에서 block을 불러와서 내용을 쓰지 않을 경우는 base.html 에 있는 내용이 적용 됩니다.





 실제로 웹 상에서 출력되는 List 페이지 입니다. 우측 list.html에 footer를 사용 하지 않았기 때문에 좌측 base.html에 있는 {% block footer %} <hr> Thank-생략- {% endblock %}의 내용이 출력 되어 있는 것을 확인 할 수 있습니다만 아직 이 template들을 view에 등록 하지 않아서 확인 할 수가 없습니다.

 그럼 먼저 해야될 건 뭐냐

간단하게 views.py파일을 생성 해서 바로 연동 하는 방법이 있고, 앱을 생성하는 방법이 있습니다. DB연동까지 할꺼면 models.py와 views.py를 가진 폴더구조를 알아서 만들어주는 앱생성이 좋습니다만, 결국 명령어로 앱생성해도 등록은 수동으로 해야되는 건 함정..


'python > Centos-django' 카테고리의 다른 글

1차 완성 결과물  (0) 2015.05.04
2일차 -2  (0) 2015.05.04
1일차 프로젝트 개요 - 환경 구성  (0) 2015.05.04
Posted by EONES
,

CentOS 6에 django를 활용 한 웹 프로젝트

 -CentOS 6.6 minimal 버전을 사용

 -python으로 개발 가능한 django 를 사용

 -목적 : MVC 모델의 게시판 구현



상세 진행 내역

1. 초기 디자인은 Cent를 이용한 apatche-tomcat 서버를 구성 해보았기 때문에

  ubuntu를 이용한 서버및 환경 구축을 목적으로 함

 - 이 과정에서 ubuntu 14.04를 최소설치 해서 적용 

   - django 설치는 간편하고 잘 작동했으나

   - apt-get에서 repository를 찾지 못해서 설정 변경

   - mysql-server 설치의 과정에서 dependency 문제가 발생.

   - 필요한 라이브러리들이 많은데, apt-get repository에서 찾아 올 수가 없어서

     wget으로 직접 설치 했으나 진행 시간이 오래 걸림

 ->이미 사용 해 본적이 있는 CentOS로 다시 설치 하는 게 빠르다고 판단하여

    개발 환경을 변경 하기로 함


2. CentOS를 설치

- 설치 과정 자체는 쉬웠으나 yum install django가 작동하지 않는 문제가 발생

- 간단하게 설치 하는 방법이 있어서 repo 파일을 생성해서 scl명령어로 실행

- 그러나 로그인 했을 경우 바로 사용 가능한 게 아니라 scl명령어 입력을 해야만 함

-bash파일 수정 후 충돌 발생 해서 리눅스 재설치


- 리눅스를 재설치 한 후 scl을 사용하지 않는 방법을 확은 pip을 wget과 python으로 설치

- python 버전 문제로 pip이 비정상 작동 django가 설치 되지 않음

- pip이나 yum으로 인스톨 할경우 django 버전은 1.8인데 python 2.7이상의 버전이 있어야 정상적으로 작동됨

-CentOS에 설치 된 python이 2.6.6 인 것을 확인하고 python 2.6.6과 매칭되는 django버전을 확인하고 설치 django 버전은 1.4

- python 2.7로 이용하고 싶은 경우는 wget으로 python27을 받아서 직접 압축을 풀고 PATH지정을 해줘야 한다. python 2.6.6에 의존성이 걸려있는 패키지들이 많아서

삭제하고 설치 하는 것 은 힘든 일이다.


-CentOS는 최소버전 설치에서도 라이브러리가 대부분 깔려서 mysql설치는 yum install로 쉽게 설치 가능


-mysql security 설정

-스키마, 유저 생성

'python > Centos-django' 카테고리의 다른 글

1차 완성 결과물  (0) 2015.05.04
2일차 -2  (0) 2015.05.04
2일차 django 학습 및 프로젝트 생성  (0) 2015.05.04
Posted by EONES
,