App Engine Python 如何处理 URL?

0 投票
4 回答
672 浏览
提问于 2025-04-15 14:42

我想问一个简单的问题,因为我不知道该怎么做。

在app.yaml文件中,当我想声明查询字符串参数时,我该怎么做呢?

比如说,为了做一个多语言的网站,我会创建这样的URL格式:

mysite.com/english/aboutus

mysite.com/italiano/aboutus

然后在app.yaml中,处理这些URL的脚本是:

- url: /english/aboutus
  script: index.py

- url: /italiano/aboutus
  script: index.py

我该如何区分这两个URL,并在index.py中处理它们呢?

我知道这是个简单的问题,我可以自己找资料,但这可能对其他在stackoverflow.com上的人也有帮助。

4 个回答

2

你可以使用网络应用框架来处理网址。

比如,在 index.py 文件里:

application = webapp.WSGIApplication(
                                 [('/english', EnglishHandler)],
                                 [('/italiano', ItalianHandler)],
                                 debug=True)

更多信息可以在这里找到。 http://code.google.com/appengine/docs/python/gettingstarted/usingwebapp.html

4

我记得我做过类似的事情:

在 app.yaml 文件里放入

- url: /(.*)/(.*)/?
  script: main.py

然后在 main.py 文件里放入

class MainHandler(webapp.RequestHandler):
     def get(self, Urlpart1, Urlpart2):

def main():
     application = webapp.WSGIApplication([('/(.*)/(.*)/', MainHandler),
                                         ('/(.*)/(.*)', MainHandler)], 
                                         debug=True)

这里的 Urlparts 指的是斜杠之间的单词

1

SCRIPT_NAME这个环境变量包含了你运行脚本时的路径。虽然我没有在Google App Engine(GAE)上专门测试过这个,但这是WSGI从CGI继承来的东西。

language= environ['SCRIPT_NAME'][1:].split('/', 1)[0]
if language not in ('english', 'italiano'):
    language= 'english'

撰写回答