我希望有这样的结构
http://localhost:8080/
http://localhost:8080/problem2/
http://localhost:8080/problem3/
...
我也想要像这样的python结构
-src
- app.yaml
- main.py
- package_problem_2
- main.py
- package_problem_3
- main.py
我想在我的网站上为不同的文件夹设置不同的main.py.
我的意思是,如果我在http://mydomain:8080
,src/main.py
需要处理请求。但是,如果我在http://localhost:8080/problem2
,那么它应该是package_problem_2/main.py
处理请求的那个。
这可能吗?
答案 0 :(得分:1)
您使用的是webapp2框架吗?
如果是这样,请继续阅读......
您需要四个文件。为简单起见,所有这些都位于应用的根文件夹中:
app.yaml
urls.py
SampleController.py
Sample.html
你app.yaml上的,你应该有这样的东西:
handlers:
- url: /.*
script: urls.ap
告诉appengine将所有url模式路由到urls.py。
然后在你的urls.py上,你有这个结构:
import webapp2
import SampleController
#For each new url structure, add it to router.
#The structure is [py filename].[class name inside py file]
app = webapp2.WSGIApplication(debug=True)
app.router.add((r'/', SampleController.SampleHandler))
def main():
application.run()
if __name__ == "__main__":
main()
关于你的问题,你有三个结构:/,/ problem2,/ problem3。他们会对应这些:
app.router.add((r'/', SampleController.SampleHandler))
app.router.add((r'/problem2', SampleController.SampleHandler2))
app.router.add((r'/problem3', SampleController.SampleHandler3))
由您来决定是否转到同一个处理程序。
SampleController.py如下所示:
import webapp2
import os
class SampleHandler(webapp2.RequestHandler):
def get(self):
template_values = {
'handler': 'We are in SampleHandler',
'param2': param2
}
path = os.path.join(os.path.dirname(__file__), 'Sample.html')
self.response.out.write(template.render(path, template_values))
class SampleHandler2(webapp2.RequestHandler):
def get(self):
template_values = {
'handler': 'We are in SampleHandler2',
'param2': param2
}
path = os.path.join(os.path.dirname(__file__), 'Sample.html')
self.response.out.write(template.render(path, template_values))
class SampleHandler3(webapp2.RequestHandler):
def get(self):
template_values = {
'handler': 'We are in SampleHandler3',
'param2': param2
}
path = os.path.join(os.path.dirname(__file__), 'Sample.html')
self.response.out.write(template.render(path, template_values))
请注意,它们都会转到相同的Sample.html文件。
Sample.html只是标准的HTML代码。