Urs*_*jor -2 python sqlite sqlalchemy flask
我完成了教程点上的所有内容(只是复制和粘贴),但当我尝试添加学生条目时,即"添加学生",它给出了
错误请求浏览器(或代理)发送了此服务器无法理解的请求.
请告知本教程是否有任何问题.
它在def new()中的这一行失败了,在app.py中:
student = students(request.form['name'], request.form['city'], request.form['addr'], request.form['pin'])
Run Code Online (Sandbox Code Playgroud)
无论谁将其标记下来.请注意,这是一个充满拼写错误和错误缩进的教程.我只是一名学生.关闭它,我什么都不会学到.
参考:http://www.tutorialspoint.com/flask/flask_sqlalchemy.htm
from flask import Flask, request, flash, url_for, redirect, render_template
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///students.sqlite3'
app.config['SECRET_KEY'] = "random string"
db = SQLAlchemy(app)
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))
def __init__(self, name, city, addr,pin):
self.name = name
self.city = city
self.addr = addr
self.pin = pin
@app.route('/')
def show_all():
return render_template('show_all.html', Students = Students.query.all() )
@app.route('/new', methods = ['GET', 'POST'])
def new():
if request.method == 'POST':
if not request.form['name'] or not request.form['city'] or not request.form['addr']:
flash('Please enter all the fields', 'error')
else:
print "1";
student = Students(request.form['name'], request.form['city'], request.form['addr'], request.form['pin'])
print "1";
db.session.add(student)
print "1";
db.session.commit()
print "1";
flash('Record was successfully added')
print "=======>>>>>>>>>";
return redirect(url_for('show_all'))
return render_template('new.html')
if __name__ == '__main__':
db.create_all()
app.run(debug = True)
Run Code Online (Sandbox Code Playgroud)
该教程在学生班中有缩进问题.构造函数代码应缩进一级,以便它成为学生类的方法.
更正代码:(注意下面代码中的"def init(self,name,city,addr,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))
def __init__(self, name, city, addr,pin):
self.name = name
self.city = city
self.addr = addr
self.pin = pin
Run Code Online (Sandbox Code Playgroud)
原因是,如果那个缩进不存在,python将不会将此函数视为学生类的构造函数.因此找不到具有匹配数量的参数的构造函数,从而导致错误.
| 归档时间: |
|
| 查看次数: |
998 次 |
| 最近记录: |