최근에 구글 앱 엔진(Google App Engine)을 알게 된 후, 그동안 구상해 왔던 글 쓰기 사이트를 조금씩 만들어 가고 있습니다. 사실 거창한 건 아니구요, 예제를 바탕으로 살을 붙여가는 중입니다. ^^;;; 간단한 글쓰기와 글 수정, 그리고 글 삭제 기능을 만들어 놓고 개밥을 먹는 중(자기가 만든 프로그램을 직접 써보는 거라고 조엘 온 소프트웨어에 나와있던... ^^;)이었는데요, 아무나 글을 삭제할 수 있게 되어있어서 그런지... 틈틈이 테스트하면서 적었던 글이 삭제되었더군요. ㅠㅠ 아흑...

그래서 로그인 기능을 추가하고 여기에 삭제 및 수정 버튼은 작성자일 때만 가능하도록 만들었습니다. 로그인 기능은 구글 앱 엔진의 코드를 그대로 이용했는데요, 코드는 아래와 같습니다.

import webapp2
from google.appengine.api import users

class MyHandler(webapp2.RequestHandler):
    def get(self):
        user = users.get_current_user()
        if user:
            greeting = ('Welcome, %s! (<a href="%s">sign out</a>)' %
                        (user.nickname(), users.create_logout_url('/')))
        else:
            greeting = ('<a href="%s">Sign in or register</a>.' %
                        users.create_login_url('/'))

        self.response.out.write("<html><body>%s</body></html>" % greeting)

위에서 보는 것과 같이 users를 import하고 users 클래스의 create_login_url() 함수와 create_logout_url() 함수를 호출해주기만 하면 됩니다. ^^)-b 와아~ 이제 이걸로 글이 마구 지워지는 일은 막을 수 있겠네요. ^^;;; 이제 코드를 응용해서 기능을 추가해봐야겠습니다. >ㅁ<)-b

그럼 다들 좋은 하루 되세요 ^^)/~

구글 앱 엔진으로 시험삼아 간단한 글쓰기 사이트를 만들고 있습니다. 사이트의 주소는 http://writers-note.appspot.com으로 정했습니다. ㅎㅎ 새로운 걸 배우는 가장 빠른 길은 필요한 걸 만들어 보는 거라는 생각을 갖고 있어서 무작정 만들기 시작했는데요 ^^;;;; 예제만 따라하다가 실제로 해보려니 이것 저것 막히는 부분이 많군요(제가 웹은 잼병이라 더 어려운듯....) ㅠㅠ

디자인은 나중에 부트스트랩(Bootstrap)을 사용할 생각이라 기본적인 html만을 사용해서 만들고 있습니다. 마크다운(Markdown)으로 글을 쓸 수 있게 만드는 것이 목표기 때문에 마크다운 라이브러리를 포함시켜야 했는데요, 관련 자료를 속 시원하게 찾을 수 없어서 엄청 찾아다녔습니다. 그러다 결국 찾긴 찾았는데... 좀 허무하더라구요. ㅠㅠ

방법은 간단합니다. 프로젝트 폴더에 원하는 라이브러리를 폴더 통째로 복사한 다음 파이썬 코드에서 import 하면 됩니다. 파이썬 마크다운 라이브러리https://pypi.python.org/pypi/Markdown에서 다운로드 받을 수 있고, 이걸 압축 푼 뒤에 markdown 폴더를 프로젝트에 복사하는 거죠. 아래처럼 말입니다. ^^;;;

폴더 구조

writers-note 폴더
|-- markdown 폴더
    |-- extentions 폴더
    |-- 관련 파일들(__init.py__ 등등)
|-- 관련 파일들(main.py, app.yaml 등등)

폴더 구조가 위와 같다면 main.py에서는 다름과 같이 쓸 수 있습니다.

main.py의 내용

import markdown

# 마크다운은 아래와 같이 사용가능!!
result = markdown.markdown("# 제목 1 양식 #")
... 생략 ... 

만약 사용하는 라이브러리가 많아서 루트 폴더에 그대로 복사하면 복잡해질 것 같다면, libs 폴더를 만들고 그 아래에 관련 라이브러리를 복사할 수도 있습니다. 아래처럼 말이죠 ^^

폴더 구조

writers-note 폴더
|-- libs 폴더(라이브러리를 모아두는 폴더)
    |-- markdown 폴더
        |-- extentions 폴더
        |-- 관련 파일들(__init.py__ 등등)
|-- 관련 파일들(main.py, app.yaml 등등)

위처럼 폴더 구조를 만들면 import 경로에 libs를 포함시켜주면 되는데요, 다른 라이브러리를 import 하기 전에 아래처럼 sys.path.insert()를 이용해서 경로를 포함시켜주면 됩니다. ^^ 이렇게 하면 라이브러리를 많이 포함해도 괜찮을 것 같네요.

main.py의 내용

import sys
sys.path.insert(0, 'libs')

import markdown

# 마크다운은 아래와 같이 사용가능!!
result = markdown.markdown("# 제목 1 양식 #")
... 생략 ... 

구글 앱 엔진의 DB 부분을 이해 못해서 수정하고 삭제를 아직 못 넣었는데, 틈틈이 살펴봐야겠습니다. ^^;;; 나중에 어느정도 완성되면 튜토리얼로 만들어 올릴 계획도 있는데, 언제가 될지는... ㅠㅠ

그럼 좋은 하루 되세요 ^^

+ Recent posts