늘 그렇듯이 본업과는 좀 거리가 있는 것들에 흥미를 갖는 못된 습성(?)덕분에 요즘 장고(django)라는 파이썬 웹프레임워크를 공부하고 있습니다. 사실 이런 것들에 흥미를 갖는 이유는 어찌보면 현실 도피 내지 소소한 불만들에서 비롯됩니다. 워드프레스가 놀라운 사용자 편의성을 제공하기는 하지만, 사소한 것 하나를 고치더라도 무척 까다로운 기준에 부합해야한다는 것들이 불만으로 쌓이고 있다보니 쉽다는 이야기에 귀가 팔랑거려 장고를 공부하고 있습니다.

일단 각설하고 김석훈님이 쓰신 파이썬 웹프로그래밍이라는 책을 보고 간단하게 블로그를 따라서 만들어보고 있는데, 실수로 장고 2.0을 설치해버렸습니다. 책에서는 장고 1.7 버전을 기준으로 하고 있다보니 달라진 점들이 많습니다.

1.7 버전대만 해도 파이선 2.x 버전을 위해서 아래와 같은 호환성을 유지하려는 목적의 코드들을 일부러 삽입합니다. 하지만 장고 2.x에 들어와서는 파이썬 3.x 버전을 기본으로 사용하기  때문에 파이선 2.x를 고려할 필요가 없습니다. 그래서 아래와 같은 코드를 삽입하면 오류메세지를 출력합니다. 아래 호환성 처리 문장은 사용하지 않습니다.

이제 더이상 django.core.urlresolvers는 쓰이지 않습니다. 간단하게 django.urls로 변경되었습니다.

파이썬 2에 대한 호환성은 이제 더 이상 명시하지 않습니다. 아래 문구 삽입시에도 마찬가지로 오류메세지가 발생합니다.

urlpatterns를 사용하는 방법이 조금 달라졌습니다. 루트에 있는 urls.py에서 app에 있는 – 예를 들면 /blog/urls.py와 연결할때 쓰는 include의 사용법이 조금 달라졌습니다.  django.conf.urls는 django.urls로 간략해졌고 이제는 url 대신 path를 사용합니다. include에서 네임스페이스를 따로 넣지 않는다는 점도 차이점입니다.

또 다른 점을 보자면 include를 했을때 namespace를 명시해주지 않았기에 /blog/urls.py에서 새롭게 추가해줘야하는 부분과 정규표현식을 다뤘을때 다른 점이 있습니다. 달라진 점은 마찬가지로 django.urls가 쓰인다는 점과 path와 re_path로 구분되어서 정규표현식을 쓸때는 re_path 함수를 써야한다는 점이 다릅니다. 그리고 namespace 대신 app_name 이라는 것이 필요하게 되었습니다.

책에서 본 그대로 소스를 입력해서 결과가 나오질 않아서 오류메세지와 함께 django 2.0 document를 뒤져보니 이런 변화들을 적용해야 작동한다는 점을 알게 되었습니다. 아무래도 또 까먹을것 같아서 이렇게 정리해 놓습니다.

주로 참고한 부분은 하단에 링크되어있는 url dispatcher부분입니다. django documentation이 잘되어있다는 이야기는 여러번 들었습니다만, 언어의 장벽때문에 읽어볼 생각을 못해봤는데, 의외로 궁하면 통한다고, 목마른 놈은 우물을 파게 되어있네요 ㅎㅎ

 

0

Leave a Reply

avatar

This site uses Akismet to reduce spam. Learn how your comment data is processed.

  Subscribe  
Notify of