from flask import Flask,render_template,request,redirect
#SQLALchemy
from flask_sqlalchemy import SQLAlchemy
import os ,datetime
app = Flask(__name__)
1、数据库路径
basedir = os.path.abspath(os.path.dirname(__file__))
#print(__file__) #D:/flask/blog/models.py
#print(os.path.dirname(__file__)) #D:/flask/blog
#print(basedir) #D:\flask\blog
2、实例化数据库连接
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' +os.path.join(basedir,'blog.sqlite')
app.config['SQLALCHEMY_COMMIT_TEARDOWN'] = True
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
3.每次请求结束后,都会提交数据库变动
app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True
4.创建SQLAlchemy
db = SQLAlchemy(app)
5.文章类
class Article(db.Model):
__tablename__ = 'article'
id = db.Column(db.Integer,primary_key = True)
title = db.Column(db.String(32))
picture = db.Column(db.String(32))
time = db.Column(db.DATETIME) #时间
description = db.Column(db.TEXT) #描述
6.同步数据库
db.create_all()
@app.route('/')
def index():
return render_template('index.html')
@app.route('/article_list/')
def article_list():
article_list = Article.query.all()
print(article_list) #[<Article 1>, <Article 2>]
print(locals()) #{'article_list': [<Article 1>, <Article 2>]}
return render_template('newslistpic.html',**locals()) #关键字传参
@app.route('/add_article/',methods = ['GET','POST'])
def add_article():
if request.method == 'POST':
#1.获取表单提交过来的数据
form_data = request.form #获取文本数据
file_data = request.files #获取图片数据
title = form_data.get('title')
description = form_data.get('description')
picture = file_data.get('picture')
time = datetime.datetime.now()
#2.保存到数据库
article = Article(
title = title,
description = description,
time = time,
picture = '/static/img/' +picture.filename #图片名称例如 1.png
)
#3.保存上传图片
picture.save('static/img/' + picture.filename)
session = db.session
session.add(article)
return redirect('/article_list/')
return render_template('add_article.html')
if __name__ == ''__main__‘’:
app.run()
Flask之Flask-sqlalchemy模块的导入方式
猜你喜欢
转载自blog.csdn.net/weixin_44183162/article/details/88351096
今日推荐
周排行