【问题标题】:App Engine Python how to handle urls?App Engine Python如何处理网址?
【发布时间】:2009-09-30 17:11:41
【问题描述】:

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

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

例如,要制作一个多语言网站,我以这种格式创建 url:

mysite.com/english/aboutus

mysite.com/italiano/aboutus

在 app.yaml 中处理它们的脚本是

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

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

如何判断这两个url的区别,在index.py中如何处理?

我知道这是一个简单的问题,我可以四处寻找参考资料,但它也可能对 stackoverflow.com 中的其他人有所帮助。

【问题讨论】:

    标签: python google-app-engine


    【解决方案1】:

    我记得做过这样的事情:

    在 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 是斜线之间的单词

    【讨论】:

      【解决方案2】:

      相反,您可以使用 webapp 框架来处理 URL。

      例如,在 index.py 中

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

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

      【讨论】:

      • 嗨,Ryan,其他页面怎么样?你的解决方案对我来说似乎不是很清楚。例如,我有两种语言的产品页面、服务页面、联系人页面?
      【解决方案3】:

      SCRIPT_NAME environ 条目包含调用脚本的路径。尚未在 GAE 中专门对此进行测试,但它是 WSGI 继承自 CGI 的东西。

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

      【讨论】:

      • 嗨 bobince,如果有很多 url,你的解决方案似乎很复杂。我在某处读到我们可以使用正则表达式,但我还没有想象如何做到这一点:-s
      • ?你到底想做什么?添加更多页面根本不会更改代码,我不确定您为什么认为您可能需要正则表达式?
      • 嗨 bobince,在这种情况下,您必须使用一些开关/案例等手动处理 script_name ......例如,它可能会出现空引用,您也必须检查。通过做一个正则表达式,我认为它更容易;)如果我错了请纠正我:)
      • 现在我迷路了! Python 没有任何switch/case 构造,SCRIPT_NAME 不能是None,你可以通过简单的字符串匹配来选择要显示的页面(不需要正则表达式)。也许您最好使用支持将请求分派到不同处理程序的现有 Web 框架?
      • 嗨 bobince,对不起,在评论最后一个代码之前我没有测试过你的代码 :-D 你的代码运行良好,除了 'SCRIPT_NAME' 更改为 'PATH_INFO',并且 environ 是 os.environ 语言= os.environ['PATH_INFO'][1:].split('/', 1)[0] 谢谢!
      【解决方案4】:

      支持 39 种人类语言。最好的方法似乎是通过 lib/django/django/conf/locale/ Here's 一个通过参数 hl=[languageCode] 翻译所有引擎消息的应用程序 [代码一次性]2

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-05-24
        • 1970-01-01
        • 2012-11-06
        • 1970-01-01
        • 1970-01-01
        • 2012-09-06
        • 2015-11-22
        • 2013-11-14
        相关资源
        最近更新 更多