Python TutorialsPoint-烧瓶和x2013;炼金术不起作用

Python TutorialsPoint-烧瓶和x2013;炼金术不起作用,python,sqlite,flask,sqlalchemy,Python,Sqlite,Flask,Sqlalchemy,我做了教程点上的所有说明(只是复制并粘贴了),但当我尝试添加学生条目时,即“添加学生”时,它给出了 错误的请求 浏览器(或代理)发送了此服务器无法理解的请求 如果本教程有任何错误,请告知 在app.py中的def new()中的此行失败: student = students(request.form['name'], request.form['city'], request.form['addr'], request.form['pin']) 不管是谁在做这件事。请注意,本教程中充满了打

我做了教程点上的所有说明(只是复制并粘贴了),但当我尝试添加学生条目时,即“添加学生”时,它给出了

错误的请求 浏览器(或代理)发送了此服务器无法理解的请求

如果本教程有任何错误,请告知

在app.py中的def new()中的此行失败:

 student = students(request.form['name'], request.form['city'], request.form['addr'], request.form['pin'])
不管是谁在做这件事。请注意,本教程中充满了打字错误和错误的缩进。我只是一个学生。关掉这个,我什么也学不到

参考:


该教程在学生课堂上有一个缩进问题。 构造函数代码应该缩进一级,以便它成为学生类的方法

更正代码:(注意下面代码中“definit(self、name、city、addr、pin):”的缩进)

原因是,如果缩进不存在,python将不会将此函数视为student类的构造函数。因此,找不到具有匹配参数数的构造函数,从而导致错误。

它不符合约定。学生班应该使用。试试这个:

student = Students(request.form['name'], request.form['city'],
        request.form['addr'], request.form['pin'])
SQLAlchemy模型也应该遵循同样的方法,学生而不是学生

class Students(db.Model):
    id = db.Column('student_id', db.Integer, primary_key = True)
    name = db.Column(db.String(100))
    city = db.Column(db.String(50))  
    addr = db.Column(db.String(200))
    pin = db.Column(db.String(10))
编辑
考虑到铁拳的相同代码对他来说运行正常,创建新学生对象的代码中很可能存在错误或打字错误。即使您已复制粘贴了代码,在键入代码时(假设您未使用CTRL-V)或粘贴代码时,也可能会发生错误。根据这些文件:

如果表单属性中不存在键,会发生什么情况?在这种情况下,将引发一个特殊的KeyError。您可以像捕获标准KeyError一样捕获它,但如果不这样做,则会显示HTTP 400错误请求错误页面。所以在很多情况下,你不必处理这个问题


因此,如果@IronFist运行相同的代码时没有问题,但对您来说,返回错误响应错误(如上所述)是由于表单中缺少键造成的,那么它很可能是您正在运行的代码上的错误。也请阅读,它们与您的问题类似。

请在此处帮助我们理解您的问题?…发布代码,完整的错误消息…等等。代码在链接中。@UrsaMajor。。不,把你输入的东西贴出来。。!!。这不是同一件事…可能是你有一个打字错误,或其他东西…我复制和粘贴。如果我复制并粘贴到这里,情况也会一样。教程有问题。作者真的必须纠正它。初学者信任并依赖于教学。看起来可能还有其他问题。即使学生对象代码没有正确缩进,如果您检查它,E111-缩进不是四的倍数,因此错误可能来自request.form.maybe,这取决于代码如何复制/粘贴到编辑器中。确保使用python感知的IDE,如PyCharm或其他:链接上的页面确实显示缩进错误。感谢您指出缩进。但是,还有其他错误。不遵循命名约定不会导致错误。@Davy可能是他在创建新学生时班上有学生,或者学生也有学生,反之亦然。@UrsaMajor错误请求表示表单词典有问题,您的
键中有一个不匹配或缺少的项。我认为教程中错误太多,无法使用。作者非常不负责任地误导了像我们这样的初学者。我用类似问题的链接编辑了我的答案,加上@IronFist毫无问题地运行了相同的代码。由于响应错误,包含键和参数的dict中存在问题。假设您键入了相同的代码,并且没有实际复制和粘贴,这就是错误的来源,那么您可能在键入时遗漏了一些内容。
student = Students(request.form['name'], request.form['city'],
        request.form['addr'], request.form['pin'])
class Students(db.Model):
    id = db.Column('student_id', db.Integer, primary_key = True)
    name = db.Column(db.String(100))
    city = db.Column(db.String(50))  
    addr = db.Column(db.String(200))
    pin = db.Column(db.String(10))