0

개인 웹 페이지에 게시물을 올릴 때마다 고유 한 퍼머 링크를 만들려고합니다. 상대적으로 검색 엔진 친화적이기를 원하므로 제목을 변경하기 위해 약간의 코드를 만들었습니다. 좋은 검색 엔진 제목 및 작동하지만 내 처리기가 그것을 받아 들일 수 없습니다. 적어도 그것은 웹 페이지가 나에게 404 오류를주기 때문에 내가 생각하는 것입니다. 정적 페이지로 리다이렉트하면 모든 것이 통과되기 때문에 HTML이 정상적으로 작동합니다. 여기에 해당하는 코드입니다Google 응용 프로그램 엔진에서 퍼머 링크를 만드는 데 도움이 필요합니다

def post(self): 
    subject = self.request.get('subject') 
    content = self.request.get('content') 

    if subject and content: 
     p = Post(parent = blog_key(), subject = subject, content = content) 
     p.put() 

     id=str(p.key().id()) 

     subject = str(subject) 
     subject = subject.replace(' ', '25fdsa67ggggsd5') 
     subject = ''.join(e for e in subject if e.isalnum()) 
     subject = subject.replace('25fdsa67ggggsd5', '-') 
     subject = subject.lower() 

     url = '/blog/%s/%s' % (id, subject) 
     self.redirect('/blog/%s/%s' % (id, subject)) 

class PostPage(BlogHandler): 
    def get(self, post_id): 
     key = db.Key.from_path('PersonalPost', int(post_id), parent=blog_key()) 
     post = db.get(key) 

     if not post: 
      self.error(404) 
      return 

     self.render("permalink.html", post = post) 

class PersonalPost(db.Model): 
    subject = db.StringProperty(required = True) 
    content = db.TextProperty(required = True) 
    created = db.DateTimeProperty(auto_now_add = True) 
    last_modified = db.DateTimeProperty(auto_now = True) 
    user_id = db.StringProperty(required = True) 

    def render(self): 
     self._render_text = self.content.replace('\n', '<br>') 
     return render_str("post.html", p = self) 

def blog_key(name = 'default'): 
    return db.Key.from_path('blogs', name) 

app = webapp2.WSGIApplication([('/blog/([0-9]+)/([.*]+)', PostPage)] 

그리고 난 그냥 메인 페이지로 리디렉션 및 해당 목록을 나열하지만 새로운 SEO 페이지로 직접하려고하지 않을 때이있을 때 다시 작동합니다.

업데이트 : 내가 사용하고 테스트 URL이

subject = "test-url" 
id = "1234" 

이 애플리케이션은 다음 www.url.com/blog/1234/test-url하라고 지시하지만 나에게 (404)를 제공을

설정입니다

오류.

+1

이것이 실제 들여 쓰기입니까? 당신은 결코 호출되지 않는'post' 함수 내에서'PostPage' 클래스를 정의하려고 시도하는 것으로 보입니다 ... – geoffspear

+0

붙여 넣기 할 때 들여 쓰기가 중단되었습니다. 들여 쓰기는 실제 코드 – clifgray

답변

1

('/blog/([0-9]+)/([.*]+)에 두 개의 그룹을 정의하지만 PostPage.get()은 하나만 사용합니다.
get(self, post_id, subject)으로 변경하거나 두 번째 그룹을 제거하십시오. ('/blog/([0-9]+)/[.*]+

+0

에서 여전히 올바르다. 여전히 ... 404를 얻는다. 핸들러 구문은 어떻게되어야 하는가? – clifgray

+0

@clifgray 사용중인 테스트 URL의 샘플을 제공하십시오. –

+0

방금 ​​끝에 정보가 업데이트되었습니다 (/blog/([0-9]+)/([.*]+)). – clifgray