【问题标题】:Web2py Default Function / Controller Not WorkingWeb2py 默认功能/控制器不工作
【发布时间】:2015-01-06 21:08:52
【问题描述】:

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

【问题讨论】:

  • 你在任何地方定义app吗?如果不是,则应将其替换为实际应用程序的名称。如果您显示所获得的回溯可能会有所帮助。
  • 我只在尝试在没有控制器的情况下访问站点时收到以下错误:“无效的控制器(主页/索引)”或“无效的请求”。我在路由文件中注意到此注释:“要启用该文件,1. 将 /router.example.py 重命名为 routes.py..” 我的根文件夹中没有路由文件;仅在我的应用程序文件夹中。我也需要一个根目录吗?我真的不明白为什么映射不起作用。

标签: web2py


【解决方案1】:

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

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

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

【讨论】:

  • 好的,当我删除特定于应用程序的 routes.py 文件并将其放在根文件夹中(因此仍使用基于参数的系统)时,应用程序可以正常工作。但是,它不知道如何路由到管理员。如何访问管理员?此外,可以更具体地了解如何使用参数方法为多个应用程序定义自定义映射?如果我在 127.0.0.1:8000 有 app1,如何在访问 app2 的同时将其定义为另一个端口上的默认应用程序?如果您愿意,我可以问第二个问题,以表扬后者。
  • 我在您的 routes.py 中看不到任何会阻止访问管理员的内容。但是,admin 只能通过 HTTPS 或本地请求访问,所以也许这就是问题所在。很难说不知道更多。关于您的第二个问题,请查看example file 中记录的“域”参数。如果您还有其他问题,可能最容易在 Google Group 上提问。
猜你喜欢
  • 2015-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-10
  • 1970-01-01
相关资源
最近更新 更多