麻烦python3 web.py

时间:2017-05-16 01:00:41

标签: python web.py

我正在使用python进行在线课程并尝试使用web.py建立一个网站。我在Windows 10计算机上运行python 3.6.1。我能够根据需要手动安装web.py并验证它是否正确导入。我已经尝试过" python3"和" p3"来自github的web.py的分支都会导致同样的问题。

我认为这是一个简单的三个页面,定义为" urls"声明如下。当我运行代码然后转到我的浏览器并输入http://localhost:8080/,我希望看到主页。但是,我得到随机结果,好像web.application()调用随机选择了网址中的两个元素。我得到以下任何结果:

 404 - Not found
 500 - Key Error: '/register'
 500 - Key Error: '/postregistration'
 200 - Returns the Home page
 200 - Returns the Registration page
 200 - Returns the PostRegistration page

请注意,我从未输入http://localhost:8080/register/postregistration,但有时浏览器会像我一样呈现这些页面。

我无法理解它在做什么,我以为我是按照教练的例子来说明的。有什么想法吗?

import web
from Models import RegisterModel

urls = {
    '/', 'Home',
    '/register', 'Register',
    '/postregistration', 'PostRegistration'
}

render = web.template.render("Views/Templates", base="MainLayout")
app = web.application(urls, globals())

#Classes/Routes

class Home:
    def GET(self):
        return render.Home()

class Register:
    def GET(self):
        return render.Register()

class PostRegistration:
    def POST(self):
        data = web.input()

        reg_model = RegisterModel.RegisterModel()
        reg_model.insert_user(data)
        return data.username

if __name__ == "__main__":
    app.run()

1 个答案:

答案 0 :(得分:0)

您的urls变量是set。它应该是tuple。从这个改变您的代码:

urls = {
    '/', 'Home',
    '/register', 'Register',
    '/postregistration', 'PostRegistration'
}

对此:

urls = (
    '/', 'Home',
    '/register', 'Register',
    '/postregistration', 'PostRegistration'
)