首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >405创建用户时post请求中出现不允许的方法错误

405创建用户时post请求中出现不允许的方法错误
EN

Stack Overflow用户
提问于 2019-09-06 04:34:34
回答 1查看 1.7K关注 0票数 0

我正在制作一个用户注册表单,我在其中发出了一个post请求,以获取打印输出表单中的用户输入数据,但405方法不允许出现错误,从而导致了这个问题。我是一个新手,所以这就是为什么我不知道哪里出了问题。

控制器类:

代码语言:javascript
复制
import web
from Models import RegisterModel

urls = (
    "/", "Home",
    "/register", "Register",
    "/post", "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.RegisterModelCls()
        reg_model.insert_user(data)
        return data.username


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

注册表:

代码语言:javascript
复制
<div class="container">
<h2>Register Account</h2>
<br /><br />
<form>

<div class="form-group label-static is-empty">
    <label for="username" class="control-label">Username</label>
    <input id="username" name="username" class="form-control" 
    type="text" placeholder="Choose a username" />
</div>
<div class="form-group label-static is-empty">
    <label for="display_name" class="control-label">Full Name</label>
    <input id="display_name" name="name" class="form-control" 
    type="text" placeholder="Enter your full name" />
</div>
<div class="form-group label-static is-empty">
    <label for="email" class="control-label">Email Address</label>
    <input id="email" name="email" class="form-control" type="email" 
    placeholder="Enter your Email" />
</div>
<div class="form-group label-static is-empty">
    <label for="password" class="control-label">Password</label>
    <input id="password" name="password" class="form-control" 
    type="password" placeholder="Make a password" />
</div>

<a type="submit" href="/post"  class="btn btn-info waves-effect" 
>Submit <div class="ripple-container"></div></a>
</form>
</div>

RegistrationModel.py类(假设打印用户输入)

代码语言:javascript
复制
import pymongo
from pymongo import MongoClient


class RegisterModelCls:
    def insert_user(self, data):
        print("data is: " + data)

错误:

代码语言:javascript
复制
http://0.0.0.0:8080/

127.0.0.1:64395 - - [06/Sep/2019 00:19:16] "HTTP/1.1 GET /post" - 405 
Method Not Allowed
EN

回答 1

Stack Overflow用户

发布于 2019-09-18 05:41:24

你把GET和POST混在一起了。

该错误指示您正在对url '/post‘执行"GET“操作。

web.py获取URL并在url列表中查找它,并确定url '/post‘是由类"PostRegistration“处理的。

因此,web.py在类PostRegistration上调用GET方法,这个类并不存在,或者正如web.py所说的“方法不允许”。

要解决这个问题,要么使用POST操作(如@Barmar建议的那样),要么将PostRegistration.POST(self)重命名为PostRegistration.GET(self)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57812652

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档