Spring, Django, Ruby on Rails 등등 수많은 웹 프레임워크가 있다. 이 중 내가 이번에 선택한 것은 django이다. 그 이유는
- admin 이 그냥 생기고(model을 정의만 하면…)
- python 에 비교적 익숙하고
- community가 발달되어서 3rd party app(django에서의 앱은 하나의 동자적인 기능을 하는 모듈이라고 보면 된다)이 많이 있다. Oauth2 authentication이라든가, markdown editor라든지…
MVC에서, M은 Model, V는 View(Template) C는 urls.py가 담당하게 된다.
Model
1 | class Problem(models.Model): |
Controller
urls.py를 request url을 regex로 각 뷰로 dispatch한다.
1 | urlpatterns = [ |
View(Template)
우리가 서버로 사용하는 것은 Django이고 실제로 웹사이트의 사용자가 보게 되는 것은 html이다. 그러면 django object를 html로 변환하는 과정이 필요하게 마련인데, 이것을 해주는 것이 template 되겠다.
object는 handle bar형식으로 표현이 되고, 그 외의 것은 {% tag %}
로 표현이 된다. 아래의 예제에서 extends, block, for, endfor, endblock 등이 되겠다.
신선했던 것은 template도 상속관계를 가질수 있다는 것. 그래서 전체적인 구조(block)는 base.html에서 잡아두고, override 하고 싶은 부분만 extends해서 커스터마이징 할 수 있다. 실제로도 아주 편한 피쳐임.
1 | {% raw %} |
revision history
- 2016-4-15 draft
- 2016-5-10 controller, view 업데이트