资讯专栏INFORMATION COLUMN

学习日志-flask-01,flask_sqlalchemy文件组织结构示例

SimpleTriangle / 2591人阅读

摘要:用意灵活的文件组织结构让很多新手玩家痛苦万分网上的相关教程也是良莠不齐本人也是在几近崩溃的边缘疯狂试探坚持即时胜利终于被我摸索出一个较为适用的简单文件组织结构本文从单文件结构逐步拆分成多个部分至于其中各个步骤拆分的用意还请恕在下才疏学浅难以

1用意

flask灵活的文件组织结构让很多新手玩家痛苦万分,网上的相关教程也是良莠不齐,本人也是在几近崩溃的边缘疯狂试探
,坚持即时胜利,终于被我摸索出一个较为适用的简单文件组织结构. 本文从单文件结构,逐步拆分成多个部分,至于其中
各个步骤拆分的用意,还请恕在下才疏学浅,难以用文字形容,各位看官请自行体会.

2.简单示例

目录结构

app.py

from flask import Flask, render_template, request, redirect, url_for
from flask_sqlalchemy import SQLAlchemy
import config

app = Flask(__name__)
app.config.from_object(config)
db = SQLAlchemy(app)


class Record(db.Model):
    __tablename__ = "record"
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    name = db.Column(db.String(100), nullable=False)
    content = db.Column(db.Text, nullable=False)


@app.route("/")
def index():
    return render_template("index.html")


@app.route("/sign_up", methods=["GET", "POST"])
def add_user():
    if request.method == "GET":
        return render_template("sign_up.html")
    else:
        for i in request.args:
            print(i)
        # print(request.args.get("username")) #None
        name = request.form.get("name")
        print("name={}".format(name))
        content = request.form.get("content")
        print("content={}".format(content))
        record = Record(name=name, content=content)
        db.session.add(record)
        db.session.commit()
        return redirect(url_for("index"))


if __name__ == "__main__":
    db.init_app(app)

    app.run()

config.py

SQLALCHEMY_TRACK_MODIFICATIONS=True

DIALECT = "mysql"
DRIVER = "pymysql"
USERNAME = "root"
PASSWORD = "hujin666.."
HOST = "127.0.0.1"
PORT = "3306"
DATABASE = "socketio_test"

SQLALCHEMY_DATABASE_URI = "{}+{}://{}:{}@{}:{}/{}?charset=utf8".format(DIALECT, DRIVER, USERNAME, PASSWORD, HOST, PORT,
                                                                       DATABASE)

index.html




    
    首页


    注册

sign_up.html




    
    注册


    
2.开始拆分

首先我们在根目录中新建一个extensions.py,将app.py中的头部部分拿进去
extensions.py

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
import config

app = Flask(__name__)
app.config.from_object(config)
db = SQLAlchemy(app)

然后在根目录中新建models包,并在models里面新建record.py文件
record.py

from extensions import db
class Record(db.Model):
    __tablename__ = "record"
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    name = db.Column(db.String(100), nullable=False)
    content = db.Column(db.Text, nullable=False)

接着在根目录下新建routes包,并在routes里面新建record.py的路由文件

from extensions import app,db
from flask import render_template, request, redirect, url_for
from models.record import Record


@app.route("/")
def index():
    return render_template("index.html")


@app.route("/sign_up", methods=["GET", "POST"])
def add_user():
    if request.method == "GET":
        return render_template("sign_up.html")
    else:
        for i in request.args:
            print(i)
        # print(request.args.get("username")) #None
        name = request.form.get("name")
        print("name={}".format(name))
        content = request.form.get("content")
        print("content={}".format(content))
        record = Record(name=name, content=content)
        db.session.add(record)
        db.session.commit()
        return redirect(url_for("index"))

最后在根目录中新建一个入口文件run.py

run.py

from extensions import db
from routes.record import app
if __name__ == "__main__":
    db.init_app(app)

    app.run()

目录结构

数据库初始化比较简单,请自行建库建表,修改连接配置
自此大功告成,迈过flask的第一大坑

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/45199.html

相关文章

  • python大佬养成计划----基于flask_sqlalchemy的网页显示数据库信息

    摘要:网页显示数据库信息使用我们刚学习的,在网页中显示数据库表中的数据。在开始运行程序前,确保数据库中执行过创建表和创建用户的操作,详见链接描述。 网页显示数据库信息 使用我们刚学习的flask_sqlalchemy,在网页中显示数据库表中的数据。在开始运行程序前,确保数据库中执行过创建表和创建用户的操作,详见链接描述。 # 模板文件templates/list.html {% extend...

    cppowboy 评论0 收藏0

发表评论

0条评论

SimpleTriangle

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<