0

Итак, я пытаюсь создать уникальную постоянную ссылку каждый раз, когда человек размещает на моей веб-странице, и я хочу, чтобы она была относительно дружественной к поисковой системе, поэтому я сделал небольшой код для изменения названия к хорошему заголовку поисковой системы, и он работает, но тогда мой обработчик не может его принять. По крайней мере, это то, что я думаю, происходит, потому что веб-страница просто дает мне ошибку 404. HTML отлично работает, потому что, когда я перенаправляюсь на статическую страницу, все это проходит. Здесь применяется код:нужна помощь в создании постоянных ссылок в Google App Engine

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.

UPDATE:

Тест URL Я использую настройки

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

Приложение затем направляет меня www.url.com/blog/1234/test-url, но он дает мне 404 ошибка.

+1

Это ваш фактический отступ? Кажется, вы пытаетесь определить класс 'PostPage' в функции' post', которая никогда не вызывается ... – geoffspear

+0

Отступ был нарушен, когда я вставил его, но я только что исправил его. отступы все правильны на фактическом коде – clifgray

ответ

1

Вы определяете две группы в ('/blog/([0-9]+)/([.*]+), но ваш PostPage.get() занимает только один.
Изменить его для определения get(self, post_id, subject) или удалить вторую группу ('/blog/([0-9]+)/[.*]+

+0

все еще не повезло с этим ... все еще получая 404. как должен синтаксис обработчика быть? is ('/blog/([0-9]+)/([.*]+) хорошо? – clifgray

+0

@clifgray Просьба предоставить образцы тестовых URL-адресов, которые вы используете –

+0

Я только что обновил его в конце с дополнительной информацией – clifgray