【发布时间】:2018-12-06 22:29:48
【问题描述】:
所以我在努力学习,SQLAlchemey。 我从教程https://www.tutorialspoint.com/flask/flask_sqlalchemy.htm复制代码
它有一个缩进错误,所以我修复了它。此外,我添加了run(use_reloader=False),因为它没有加载。但现在它显示:
This site can’t be reached The webpage at http://127.0.0.1:6000/ might be temporarily down or it may have moved permanently to a new web address.
ERR_UNSAFE_PORT
在浏览器中。
完整的代码是
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:
student = students(request.form['name'], request.form['city'],
request.form['addr'], request.form['pin'])
db.session.add(student)
db.session.commit()
flash('Record was successfully added')
return redirect(url_for('show_all'))
return render_template('new.html')
if __name__ == '__main__':
db.create_all()
app.run(port=6000, use_reloader=False, debug = True)
【问题讨论】:
-
@BilalAliJafri:不建议使用 0.0.0.0 而不解释安全隐患!他们正在连接到默认主机 localhost,并且他们的 Flask 服务器不需要对其网络的其余部分可见。
-
@BilalAliJafri:如果有人在公共网络上这样做,他们就会面临可能的安全问题,包括他们的机器被黑客入侵。 Werkzeug WSGI 服务器不是久经沙场的,在调试模式下运行时,有可能绕过简单的 PIN 保护并允许在您的机器上执行任意 Pythno 代码。
-
因此我删除了您的评论。请不要要求人们再次对此类风险敞开心扉。运行 Flask 开发服务器时,请将其保留在本地。
-
带@MartijnPieters 注释,使用
wsgiref而不是flask 等。在没有学习WSGI 应用程序的情况下,请勿使用flask 或dijango 等任何应用程序。 -
@dsgdfg:
app.run()的全部意义在于为您提供本地服务器进行开发。 没关系。除了他们自己的机器之外,他们不会尝试从其他任何地方访问它。
标签: python flask sqlalchemy flask-sqlalchemy