web2py根据环境进行配置

3 投票
1 回答
907 浏览
提问于 2025-04-16 18:38

web2py是否支持根据不同环境(比如开发环境、测试环境、生产环境等)进行配置?这类似于Grails和Ruby on Rails的做法。

我看过官方书籍,但没找到相关的信息。

1 个回答

4

web2py的开发者认为这种做法并不好。

他们不认为开发和生产环境之间应该有明显的区别。举个例子,如果一个应用程序有bug,这个bug会被记录下来,但不会展示给用户,只会给管理员看到。

而且,web2py根本没有配置文件,因为应用程序应该是可移植的,不需要去修改设置。

不过,你可以以比Rails或Django更复杂的方式来管理不同的环境。这是因为模型不是在每次请求时导入的,而是直接执行的。你可以在运行时添加自己的条件来检测当前的环境。例如:

  settings = dict()
  if request.env.http_host == 'http://127.0.0.1:8000'
       settings['development']=True
  else:
       settings['development']=False
  if settings['development']:
       db = DAL('sqlite://....')
  else:
       db = DAL('mysql://....')

你可以看到如何将这个概念扩展到更复杂的条件。当然,你也可以把settings['development']=True或False设为常量,这就相当于Rails的做法。

撰写回答