블로그 서비스를 쓰고는 있는데 아무래도 open api만 가지고는 이런저런 제약 사항들 때문에 맘에 들게 운영하는데 한계가 있다고 느껴져서 설치형 블로그를 찾아보고 있었다.
대표적이자, 가장 대중적인 Wordpress 는 php 기반이다보니 다뤄보지 못한 언어라 부담이 있는게 사실이었다.
이런저런 고민을 하고 있는데 문득 Django기반의 설치형블로그인 Mezzanine이 있던게 기억이 났다. 아무래도 php를 선호하는 웹개발자가 많다보니 다소 생소할 수 있는 서비스라고 생각이 된다. 예전에 중견 개발자 분과 우연찮게 django 스터디를 잠깐 한적이 있었는데 그 때 그 분이 극찬을 하며 소개해줘서 알게 되었는데 wordpress에 뒤지지 않게 많은 기능들을 지원했던 것으로 기억이 됐다.
특히 Django의 경우, Heroku하고 잘 붙어서 서버 구축에 대한 부담도 줄일 수 있다는 장점이 있다.
평소에 친한 개발자 친구가 항상 python을 극찬했기 때문에 별 생각없이 개발공부 시작을 python으로 했는데, 당시 웹개발에 있어서 python은 마이너한 친구라는 걸 나중에서야 알았다. 물론 린 개발론이 유행을 타던 시절이라 django가 새롭게 조명받고 있긴 했지만 메이저한 시장에서는 자바나 닷넷등을 쓰던 시절이라 python으로 웹개발을 한다고 하면 일부 사람들은 무슨 웹개발을 python으로 하냐며 웃고 지나가던 그런 경우도 있었다.
그럼에도 불구하고 python을 권장해준 친구가 무슨 말을 그리하냐며 엄청 쉽고 간단하다며 flask를 소개해줬는데, 당시만 해도 웹서버 뭐하는 놈인지 개념조차 없던 시절이라 겁나 어려운걸 소개해줘놓고 쉽다고 하니 장난하나 싶었던 기억이난다.
당시에는 python으로 웹개발하는 걸 소개하는 책도 없어서 뒤지고 뒤져서 딱 한권 나왔는데 아래 서적이었다.
{% block content %}This is content area {% endblock %}
</div> </body>
</html>
약간의 css가 들어가서 다소 복잡해 보일 수 있으나 핵심은 {% block something %}으로 정리되는 부분이다.
기본적인 layout 외 변경이 될 부분들을 {% block somting %}{% endblock %}으로 설정해 놓으면 그 부분에 변경될 내용을 HTML파일로 만들어서 삽입할 수 있게 된다. 좀 더 쉬운 이해를 위해서 위 파일을 브라우져에서 실행한 화면을 보자.
위 화면을 보면 {% block sidebar %}{% endblock %}과 {% block content %} {% endblock %}으로 설정된 두 영역이 보인다.
위 두 영역은 다른 html 파일을 만들어서 {% extends 'base.html' %} 을 입력하면 기본 layout으로 사용할 수 있고, 삽입을 원하는 영역을 선택하기 위해서 {% block sidebar %} 또는 {% block content %}을 입력하면 html에 작성된 내용이 layout 상의 block 영역에 삽입된다.
아까 만들었던 articles.html / article.html 파일을 적용시키면 다음과 같다.
articles.html
{% extends 'base.html' %}
{% block content %}
{% if articles.count > 0 %} {% for article in articles %} <div>
<본 강좌는Mike Hibbert에 의해 제작되었으며, 제가 정리한 내용이 도움이 된다고 생각되시면 반드시 유투브 페이지에 방문하셔서 추천과 구독을 눌러주세요>
Tutorial5은 django의 admin 페이지에 models.py에 만들어놓은 model을 admin에서 직접 보고 관리할 수 있도록 설정하는 것을 보여준다.
이클립스에서 django 프로젝트를 생성하고, 프로젝트에서 app을 만들면 app폴더 안에 admin.py 파일이 기본적으로 존재한다.
article/admin.py 를 열면 아래와 같이 출력이 된다.
위와 같이 나온 화면에 다음과 같이 추가하면 admin페이지에 models.py에 정의한 각각의 Table이 등록된다.
admin.py를 모두 작성하였으면, django_test/urls.py로 들어가서 admin으로 접속할 수 있는 url이 있는지 확인한다. 이클립스를 사용할 경우 기본적으로 입력되어 있으나, 만약 없을 경우에는 아래와 같이 admin 페이지로 이동할 수 있는 경로 url(r'^admin/', include(admin.site.urls)),를 만들어 준다.
그리고, http://127.0.0.1:8888/admin/ 을 브라우저에 입력하면 admin 페이지에 접속할 수 있다. 만약 id와 password를 묻는다면, syncdb를 처음 할 때 입력했던 계정 정보를 입력하도록 한다.
admin 화면에서 Articles에 들어가면 models.py에서 작성한 class Article의 결과물을 직접 눈으로 볼 수 있으며 데이터의 입출력 또한 자유롭게 할 수 있다.