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

时间:2015-01-06 21:08:53

标签: web2py

以下是我在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文件。

1 个答案:

答案 0 :(得分:0)

首先,在使用特定于应用程序的routes.py文件时,您必须在root / web2py文件夹中有一个routes.py文件,并且必须使用routes_app指定到应用程序的路由(请参阅"特定于应用程序的URL重写"部分位于文档的this section末尾。

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

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