Flask+mysql+centos7搭建微网站教程
Posted 老朱串串香
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flask+mysql+centos7搭建微网站教程相关的知识,希望对你有一定的参考价值。
Flask因为轻且容易上手,我就选择它啦。首先用PyCharm 创建一个完整的工程结构,跟django不一样不能用命令行。然后它会自动生成静态资源目录文件,static和templates,不用像django一样手动配置,很方便。mysql事先装好。
开写代码:我都是写在主模块里的:第一步创建实例应用:
app = Flask(__name__)
第二步配置mysql,按这个连接格式和自动提交sql
app.config['SQLALCHEMY_DATABASE_URI'] = "mysql+pymysql://root:pwd@localhost:3306/Word"
app.config['SQLALCHEMY_COMMIT_TEARDOWN'] = True
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True
第三步用flask自带的SQLAlchemy创建数据库连接对象
db = SQLAlchemy(app)
第四步创建数据表模型
class Word(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(80), unique=True, nullable=False)
age = db.Column(db.String(80), unique=False, nullable=False)
word = db.Column(db.String(320), unique=False, nullable=False)
def __repr__(self):
return '<User %r>' % self.id
这里我用到的字段就是昵称、年龄、留言内容,留言时间后面再加。然后生成表
db.create_all()
然后就开始我们的视图函数了
@app.route('/rou')
def hello_world1():
return render_template('index.html', title='hello')
@app.route('/su')
def hello_world2():
return render_template('index2.html', title='hello2')
对应前台左边两个菜单的请求响应,路由和渲染模板就不用做多解释了。
然后就是我们右边菜单的留言系统了,要用到数据库,步骤也很简单。
@app.route('/liu', methods=['GET', 'POST'])
def home():
return render_template('form.html')
@app.route('/update', methods=['POST'])
def update():
name = request.form.get('name', 'name为空')
age = request.form.get('age', 'age为空')
word = request.form.get('word', 'word为空')
if (name and age and word):
print('second' + name, age, word)
admin = Word(name=name, age=age, word=word)
db.session.add(admin)
db.session.commit()
return redirect(url_for('view'))
return "不能为空"
这里第一个函数是处理首页,渲染出一个form表单页面供用户填写信息。然后用户提交后,第二个函数处理信息存入mysql,如果都正确的话跳转至留言浏览页,注意url_for里的参数必须是函数名不能带参数,我就在这里死磕了半天,我这里跳转至浏览页的函数处理时页码默认为第1页
@app.route('/view', methods=['GET'])
def view():
p = int(request.args.get('p','1'))
......
return render_template('view.html', p=p, mess=mess, all_p=all_p, lis=lis)
这里省略部分为分页逻辑,有点麻烦以后再叙。这就渲染出了留言页。
if __name__ == '__main__':
app.run(host='0.0.0.0',port=80)
以上是关于Flask+mysql+centos7搭建微网站教程的主要内容,如果未能解决你的问题,请参考以下文章
CentOS7.5搭建Flask环境python3.6+mysql+redis+virtualenv
一文教您如何通过 Docker 快速搭建各种测试环境(Mysql, Redis, Elasticsearch, MongoDB) | 建议收藏