以下是我在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文件。
答案 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
变量(它应该是应用程序的名称),或者将其替换为应用程序的名称。