2009-09-30 152 views
0

我只想问一个简单的问题,因为我不知道该怎么做。App Engine Python如何处理网址?

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

例如,做一个多语言的网站,我在此格式创建的网址:

mysite.com/english/aboutus 

mysite.com/italiano/aboutus 

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

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

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

在哪种方式我可以确定这两个网址之间的区别,以及如何在index.py中处理它们?

我知道这是一个简单的问题,我可以查找引用,但它也可能帮助其他人在stackoverflow.com。

回答

1

environ entry包含脚本被调用的路径。没有专门在GAE中测试过这个,但它是从CGI继承的WSGI。

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

嗨,你的解决方案似乎是复杂的,如果有很多网址。 我读了一些我们可以使用正则表达式的地方,但我并没有想象如何去做:-s – 2009-09-30 20:27:32

+0

?你到底想做什么?添加更多页面并不会改变代码,我不确定为什么你认为你可能需要一个正则表达式? – bobince 2009-09-30 21:10:56

+0

嗨bobince,在这种情况下,你必须手动处理script_name,例如,它可能会出现空引用,你也必须检查。通过做一个正则表达式,这是我认为更容易;)请纠正我,如果我错了:) – 2009-10-02 10:15:56

2

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

例如,在index.py

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

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

+0

瑞安嗨,怎么样其他页面呢?我的解决方案似乎不是很清楚。例如,我有两种语言的产品页面,服务页面,联系人页面? – 2009-09-30 20:24:34

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是斜杠

之间的话
0

有39胡支持人类语言。最好的办法似乎是通过LIB/Django的/ Django的/ conf目录/区域设置符合/ Here's是通过参数HL = [语言代码] [代码一次性]将所有的引擎消息的应用2

相关问题