Python 需要帮助在谷歌应用程序引擎中创建永久链接吗

Python 需要帮助在谷歌应用程序引擎中创建永久链接吗,python,google-app-engine,google-cloud-datastore,url-mapping,Python,Google App Engine,Google Cloud Datastore,Url Mapping,因此,我试图创建一个独特的永久链接,每次有人在我的网页上发布,我希望它是相对搜索引擎友好的,所以我已经做了一些代码,以改变一个良好的搜索引擎标题,它是工作,但我的处理程序不能接受它。至少这是我认为正在发生的事情,因为网页只给了我一个404错误。HTML工作得很好,因为当我重定向到一个静态页面时,它会全部通过。以下是适用的代码: def post(self): subject = self.request.get('subject') content = self.request.

因此,我试图创建一个独特的永久链接,每次有人在我的网页上发布,我希望它是相对搜索引擎友好的,所以我已经做了一些代码,以改变一个良好的搜索引擎标题,它是工作,但我的处理程序不能接受它。至少这是我认为正在发生的事情,因为网页只给了我一个404错误。HTML工作得很好,因为当我重定向到一个静态页面时,它会全部通过。以下是适用的代码:

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)]

然后,该应用程序将我指向www.url.com/blog/1234/test-url,但它给了我一个404错误。

您在
('/blog/([0-9]+)/([.*]+)
中定义了两个组,但您的postage.get()只接受一个。

将其更改为def
get(self,post\u id,subject)
或删除第二个组
('/blog/([0-9]+)/[.*]+
我认为您应该查看一下我们处理程序映射上的引号,它似乎不一致

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

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


仍然不走运…仍然得到404。处理程序语法应该是什么?是('/blog/([0-9]+)/([.*]+)好吗?@clifgray请提供您正在使用的测试URL的示例这是您的实际缩进吗?您似乎试图在一个从未被调用的
post
函数中定义
PostPage
类……我粘贴缩进时它被破坏了,不过我刚刚修复了它。实际代码中的缩进都是正确的
subject = "test-url"
id = "1234"