首页 > 其他 > 详细

学习flask框架之简单项目教程

时间:2019-11-24 19:48:04      阅读:120      评论:0      收藏:0      [点我收藏+]

  最近在回看之前做的2个flask框架写的项目代码,因为自己主要负责业务逻辑的API那一块,没有整个框架从头到尾实践一遍,借这次回看,写一个很简单的小项目并记录下来,作为自己对flask框架理解思路的梳理和笔记的归纳。

  1.前期准备

  下载安装python(我个人的习惯是用python3)和mysql数据库。

  2.目录结构的制定

  首先flask框架是没有固定的项目目录组织结构的,所以我们自己制定出自己风格习惯的目录结构。根据需要存放的文件类型,先简单的定为以下几个目录:

技术分享图片

  3.代码编写

  3.1从apps\__init__.py里入手,创建一个flask实例,并对其进行属性参数的设置:

# -*-coding:utf8-*-
from flask import Flask
import os
from datetime import timedelta
from .app_login.views import login_blue
from .app_manager.views import manager_blue


def create_app():
    app = Flask(__name__)  # 创建flask实例

    app.register_blueprint(login_blue)  # 注册蓝图(路由)
    app.register_blueprint(manager_blue)

    app.config.update(SECRET_KEY=os.urandom(24))  # 设置密钥
    app.permanent_session_lifetime = timedelta(minutes=24*60)
    return app  # 返回设置完参数的flask实例

  3.2运行入口:run.py,运行flask实例。

# -*-coding:utf8-*-
from apps import create_app
from conf import conf

app = create_app()  # 获取flask实例

if __name__ == __main__:
    # 启动服务;是否开启调试模式、监听IP和端口在conf.py里设置
    app.run(debug=conf.DEBUG, port=conf.PORT, host=conf.HOST)

  3.3配置参数:conf.py。根据生产、测试、开发三种环境设置不同参数,具体的参数值根据自己安装mysql时设定的来填写。

# -*-coding:utf8-*-
import os


class Config(object):
    DEBUG = True  # flask是否开启debug模式
    DB_NAME = danni  # 数据库名称
    DB_HOST = 127.0.0.1  # 数据库IP

    DB_PORT = 3306  # 数据库端口(mysql默认为:3306)
    DB_UN = ‘‘  # 数据库账号名
    DB_PW = ‘‘  # 数据库密码


class ProductionConfig(Config):
    """
    生产环境
    """
    DEBUG = False  # flask是否开启debug模式


class TestingConfig(Config):
    """
    测试环境
    """
    DB_HOST = 127.0.0.1  # 数据库IP地址
    R_HOST = 127.0.0.1   # Redis IP地址


class DevelopConfig(Config):
    """
    开发环境
    """
    PORT = 8082  # flask端口;flask默认监听本地127.0.0.1:5000
    HOST = 0.0.0.0  # flask绑定ip;0.0.0.0表示监听所有地址


# 自动判断环境生产config
if os.path.exists(production.conf):
    conf = ProductionConfig()
    conf_ver = conf.ProductionConfig
    conf_env = u生产环境
elif os.path.exists(test.conf):
    conf = TestingConfig()
    conf_ver = conf.TestingConfig
    conf_env = u测试环境
else:
    conf = DevelopConfig()
    conf_ver = conf.DevelopConfig
    conf_env = u开发环境 

  3.4数据库连接的参数设置:libs\db.py

# -*-coding:utf8-*-
import pymysql
from conf import conf


# 连接数据库
db = pymysql.connect(host=conf.DB_HOST, port=conf.DB_PORT, user=conf.DB_UN, passwd=conf.DB_PW, db=conf.DB_NAME)

# 建立游标
cursor = db.cursor(cursor=pymysql.cursors.DictCursor)  # 返回{}或[{}, {}, ...]
# cursor = db.cursor()  # 返回()或((), (), ...)

  3.5设置完这些参数后,进入业务逻辑代码:apps\app_manager;分为3部分:__init__.py负责初始化变量等,model.py负责数据库数据处理等,views.py负责不同api接口的逻辑;业务场景:现有一个girls表,控制台端要获取表内所有用户的信息。

danni数据库下girls表的信息(name字段值不能重复):

技术分享图片

 model.py:数据库的数据操作

# -*-coding:utf8-*-
from libs.db import db
import datetime
import pymysql


# 根据用户名user获取对应的用户信息;如果user为空,则获取所有用户信息
def get_users(user):
    sql = select * from girls where status != 1001
    if user:
        sql +=  and name = %a % user
    # 数据库的连接参数在libs/db.py设置
    cursor = db.cursor(cursor=pymysql.cursors.DictCursor)  # 返回{}或[{}, {}, ...]
    cursor.execute(sql)
    users = cursor.fetchall()
    cursor.close()  # 记得要关闭
    return users

views.py里获取前端传来的数据,根据查询参数和业务逻辑调用model.py里函数

# -*-coding:utf8-*-
from flask import Blueprint, render_template, request, jsonify
from .model import get_users, insert_user

# 声明一个蓝图;设置了蓝图名称、静态文件和模板文件存放的路径及url前缀
manager_blue = Blueprint(manager, __name__, template_folder=../../template, static_folder=../../static, url_prefix=/manager)


# 将url和视图函数绑定
# 获取所有会员信息
@manager_blue.route(/getuser, methods=[post])  # 定义url和请求方法:post
def get_user():
    data = request.form  # 获取前端数据
    user = data[user]
    users = get_users(user)  # 调用model.py里get_users()
    return jsonify({"code": 200, "msg": "success", "data": users})

  4.启动服务:即运行run.py:python3 run.py;

技术分享图片

  根据提示的ip和端口加上自己定义路由访问该地址:http://139.224.10.202:8082/manager/getuser

技术分享图片

  返回的结果:

技术分享图片

  5.结尾

  到这里就是一个完整的框架流程了,但是还有前端模板渲染、get访问、sql语句遇到的坑等在这里没有提到,可以参考完整的项目代码(也是很简单的,比较好理解)。

学习flask框架之简单项目教程

原文:https://www.cnblogs.com/hongdanni/p/11922575.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!