2013-12-20 2 views
2

저는 파이썬 GAE 및 jinja2 템플릿을 사용하여 블로그를 만들고 있습니다. 이 블로그는 주요 내용의 경우 큰 항목과 측면 패널 항목의 경우 작은 내용의 두 열의 일반적인 레이아웃을 가지고 있습니다.GAE 측면 패널 목록 최근 게시물

사용자의 최근 게시물 5 개를 사이드 패널에 추가하려고합니다. Google Blogger '내 블로그 목록'과 매우 흡사합니다.하지만이 목록을 다른 핸들러에 전달해야합니다. 예를 들어, 메인 블로그 페이지에있는 사용자의 경우 사이드 패널에 가장 최근 5 개의 게시물이 표시됩니다.하지만 사용자가 다른 사람에게 가서 새로운 게시물을 추가하면이 페이지가 계속 표시됩니다 . 최근 5 게시물은 여기에이 일을 내 현재의 방법의 의사 코드

MainPage_handler(self): 
    self.render('main.html', recent_posts = function_to_get_recent_posts()) 

AddNewPost_handler(self): 
    self.render('add_post.html', recent_posts = function_to_get_recent_posts()) 

기능은 다음과 같습니다.

class Blog(db.Model): 
owner_id = db.StringProperty() 
...... 
created = db.DateTimeProperty(auto_now_add = True) 

@classmethod 
def recent_post(cls, limit, onwer_name): 
    blogs = cls.all().filter('owner_id = ', onwer_name).order('-created').fetch(limit) 
    return blogs; 

더 좋은 방법이 있나요?

+0

어떻게하고있는가? – Totem

+0

전혀 없습니다. 그러나 더 좋은 방법이 있는지 알고 싶습니다. – bili

+0

function_to_get_recent_posts에 대한 코드를 공유 할 수 있습니까? – Totem

답변

1

가장 최근 게시물 5 개가 필요하므로 새 페이지를 리디렉션하거나 렌더링 할 때 이들이 무엇인지 '다시 계산'하는 것이 좋습니다. 그 가정하에, 나는 당신이하는 일이 페이지 로딩 시간이나 어떤 문제를 일으키지 않는 한, 당신이하는 일을하는 것처럼 보인다고 말하고 싶다. 아마 당신이 데이터베이스를 때리고 싶지 않다면, GAE에 내장 된 memcached 옵션을 사용하여 캐시 된 이러한 최근 게시물을 가질 수는 있겠지만, 아마도 여러분의 함수가 리턴하는 것일 수도 있습니다.

함수를 호출 할 때마다 데이터베이스를 직접 방문하는 것처럼 보입니다. 게시물이 추가 될 때마다 가장 최근 게시물 5 개를 캐싱하는 것은 어떨까요? 누군가가 대신 모든 시간 (사이드 패널 게시물의 맥락에서) 게시물을 추가 할 때 당신이 경우 그 방법은, 당신은 단지, here

그러나 당신이 memcached를 등

체크 아웃 리디렉션 데이터베이스에 접속합니다 GAE ndb를 사용하면 자동으로 캐싱을 관리합니다.

+0

네, 그게 지금 제가하고있는 일입니다. – bili

+0

예, memcached가 내 할 일 목록에서 다음을 사용합니다. 최적화에 집중하기 전에 핵심 기능을 먼저 얻고 싶습니다. – bili

관련 문제