Web2py 默认功能/控制器不工作

Web2py Default Function / Controller Not Working

这是我在 web2py/applications/myapp/routes.py 文件中的内容(这是预加载的,只是添加了 BASE 参数):

from fileutils import abspath
from languages import read_possible_languages

possible_languages = read_possible_languages(abspath('applications', app))
#NOTE! app - is an application based router's parameter with name of an
#            application. E.g.'welcome'

routers = dict(
    app= dict(
        default_language = possible_languages['default'][0],
        languages = [lang for lang in possible_languages
                     if lang != 'default'],
    ),
    BASE= dict(
        default_application = 'myapp',
        default_controller = 'default',
        default_function = 'index',
    functions = ['my', 'functions', 'are', 'here'], 
               )
)

我访问 127.0.0.1:8000 时被路由到欢迎应用程序,当我访问 127.0.0.1:8000/function 和 127.0.0.1:8000/myapp/function 时收到索引错误。我重新加载了路线。这是我的 web2py 目录中唯一的 routes.py 文件。

首先,当使用特定于应用程序的 routes.py 文件时,您必须在根 /web2py 文件夹中仍然有一个 routes.py 文件,并且您必须使用 routes_app 来指定路由到应用程序(请参阅文档 this section 末尾的 "Application-Specific URL rewrite" 部分)。

其次,当使用基于参数的重写系统时(即定义 routers 字典时),您根本不需要为特定于应用程序的 routes.py 文件而烦恼。相反,只需在 /web2py 文件夹中使用单个 routes.py 文件,并在 routers 字典中为每个需要自定义路由的应用程序指定一个单独的键("BASE" 键适用于所有应用程序) . (从技术上讲,您可以拥有特定于应用程序的 routes.py 文件,但与将所有内容都保留在主 routes.py 文件中相比并没有太多好处)。

最后,在上面的 routes.py 文件中,您必须在某处定义 app 变量(它应该是应用程序的名称)或将其替换为应用程序的名称。