路由

Jam.py v7 引入了路由功能。由于 Jam.py v5 是 SPA(单页应用程序),因此不需要路由。 另一方面,例如,需要在 Jam.py v5 中实现用户注册页面。

此问题的解决方案类似于 创建注册表单

如您所见,register.html 文件使用了 JavaScript AJAX 代码。 因此,任何需要与数据库交互的附加页面都需要类似的方法。

在 Jam.py v7 中,解决方案是在 on_request 事件处理程序中处理每个请求,并对有效请求定义响应。

这使我们能够创建自定义的登录和注册表单,其中可以创建自定义错误信息。 例如:"用户不存在!"、"密码错误"等。

新的 login.html 页面显示的错误消息:

自定义登录表单

新的 register.html 页面(无需 AJAX):

注册表单

路由代码

如前所述,使用 on_request 事件。

以下代码应存在于 “任务/服务器模块” 中。为便于阅读,以下未包含 Python 逻辑:

def on_request(task, request):
        parts = request.path.strip('/').split('/')
        if not parts[0]:
            if task.logged_in(request):
                return task.serve_page('index.html')
            else:
                return task.redirect('/login.html')
        elif parts[0] == 'login.html':
                                .
                                .

        elif parts[0] == 'register.html':
                                .
                                .
                    return task.serve_page('register.html')
                                .
                                .

                    return task.redirect('/login.html')

提供 robots.txt 文件的工作示例:

def on_request(task, request):
    parts = request.path.strip('/').split('/')
    if not parts[0]:
        if task.logged_in(request):
            return task.serve_page('index.html')
        else:
            return task.redirect('/login.html')
    elif parts[0] == 'robots.txt':
        if task.logged_in(request):
            return task.serve_page('robots.txt')

robots.txt 文件应存在于应用程序文件夹内。

另请参阅

serve_page

redirect

on_request