Python Flask框架学习29:项目管理器Manager/传递参数/优化项目代码结构

32 篇文章 3 订阅

一. 项目文件树如下

è¿éåå¾çæè¿°

1.创建工具类包 utils, 并在里面创建__init__.py文件用于存放初始化app的函数
__init__.py文件设置如下:

 

import os

from flask import Flask
from App.views import blue

def create_app():

    BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    templates_dir = os.path.join(BASE_DIR, 'templates')
    static_dir = os.path.join(BASE_DIR, 'static')
    app = Flask(__name__, static_folder=static_dir, template_folder=templates_dir)
    app.register_blueprint(blueprint=blue, url_prefix='/hello') # 将app交由blue管理

    return app

 

在manage.py文件中创建启动文件方式并使用项目管理器进行管理app,设置代码如下:
from flask_script import Manager
from utils import create_app

# 初始化,__name__代表主模块名或者包

app = create_app()

manager = Manager(app=app)


if __name__ == '__main__':
    manager.run()
在工程项目App下的views.py为视图模块,设置如下:

 

import uuid

from flask import render_template, request, make_response, redirect, url_for, abort
from flask import Blueprint


blue = Blueprint('first', __name__)


# 主要用来处理业务逻辑, 以下函数为传递的各种参数类型与传递方式!


@blue.route('/', methods=['GET', 'POST'])
def hello():
    # 视图函数
    return 'Hello World'

@blue.route('/hello/<name>')
def hello_man(name):
    print(name)
    print(type(name))
    return 'hello name:%s type:%s ' % (name, type(name))

@blue.route('/helloint/<int:id>')
def hello_int(id):
    print(id)
    print(type(id))
    a = 'wanghaifei'
    return 'hello int:%s' % (id)

@blue.route('/getfloat/<float:price>')
def hello_float(price):
    return 'float:%s' % price

@blue.route('/getstr/<string:name>')
def hello_name(name):
    return 'string:%s' % name

@blue.route('/getpath/<path:url_path>') # 与string的区别是可以匹配到'/', 也是当做字符串返回, 而string则不行
def hello_path(url_path):
    return 'url_path:%s' % url_path

@blue.route('/getuuid/')     #必须加两个斜杠
def hello_get_uuid():
    a = uuid.uuid4()
    return str(a)

@blue.route('/getbyuuid/<uuid:uuid>')     #必须加两个斜杠
def hello_getby_uuid(uuid):
    return 'uu:%s' % uuid
启动项目文件方式: -d指的是开启debug模式
python manage.py runserver -h 0.0.0.0 -p 8000 -d

创建static 与 templates 静态文件夹, 结构如下:

è¿éåå¾çæè¿°

views.py文件跳转静态文件方式如下:
@blue.route(r'/index/')
def index():
    # return send_file('../templates/hello.html')
    return render_template('hello.html')


@blue.route('/getrequest/', methods=['GET', 'POST'])
def get_request():
    if request.method == 'GET':
        agrs = request.args
    elif request.method == 'POST':
        form = request.form

    return '获取request'

@blue.route('/makeresponse/')
def get_response():

    temp = render_template('hello.html')
    # response = make_response('<h2>羞羞哒</h2>')
    response = make_response(temp, 404)#后面的250是可以自己定义返回的状态码

    return response

@blue.route('/redirect/')
def make_redirect():
    # 第一种方法
    # return redirect('/hello/index/')
    # 第二种方法, 跳转到first蓝图下的index路由下
    return redirect(url_for('first.index'))
异常终止使用函数abort
@blue.route('/makeabort/')
def make_abort():
    abort(404)   # 终止,抛出404错误
    return '终结'

@blue.errorhandler(404)
def get_error(exception):

    return '捕捉异常:%s' % exception

更多内容,可关注作者的微信公众号:胖哥真不错。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python Flask框架下,一个常见的项目结构包括以下几个文件和文件夹: 1. `app`文件夹:用于存放应用程序的主要代码文件。 2. `templates`文件夹:用于存放HTML模板文件,用于渲染应用程序的视图。 3. `static`文件夹:用于存放静态文件,如CSS样式表和JavaScript脚本。 4. `main`文件夹:用于存放应用程序的主要逻辑代码文件。 5. `__init__.py`:应用程序的初始化文件,通常用于创建应用程序实例和配置应用程序。 6. `errors.py`:用于处理应用程序中的错误和异常。 7. `forms.py`:用于定义应用程序中的表单类。 这样的项目结构可以使代码组织更清晰,并且方便维护和扩展。需要注意的是,这只是一个示例的基本多文件Flask应用结构,实际项目中可能会根据具体需求进行调整。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [使用PythonFlask框架构建大型Web应用程序的结构示例](https://download.csdn.net/download/weixin_38693657/13778101)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Python Flask框架-开发简单博客-项目布局、应用设置](https://blog.csdn.net/eason612/article/details/127606521)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值