flask蓝图的简单使用

1.flask的简单使用

from flask import Flask
# from flask import make_response
app = Flask(__name__)
app.config.from_object(‘config‘)
print(app.config[‘DEBUG‘])

# 路由注册方法1
@app.route(‘/hello/‘)
def hello():
    # 基于类的视图(即插视图)
    return "Hello, jack"

# Response对象
@app.route(‘/hello2/‘)
def hello2():
    # 返回status code 200,404,301
    # 返回content-type http headers
    # 返回Response对象
    headers = {
        ‘content-type‘: ‘text/plain‘,
        ‘location‘: ‘http://www.bing.com‘
    }

    # response = make_response(‘<html></html>‘, 301)
    # response.headers = headers
    # return "<html></html>"
    # return response
    return ‘<html></html>‘, 301, headers

# 路由注册方法2
# app.add_url_rule(‘/hello/‘, view_func=hello)
# config是dict子类

# 当是入口文件启动的时候才允许app.run
# 原因2:当作为生产环境的时候这个app.run是不会运行的,由uwsgi作为服务器启动,如果没有if判断就会冲突
if __name__ == ‘__main__‘:
    # 生产环境 nginx + uwsgi
    app.run(host=‘0.0.0.0‘, debug=app.config[‘DEBUG‘], port=81)

2.蓝图的使用

└── fisher
    ├── app
    │   ├── __init__.py
    │   ├── __pycache__
    │   └── web
    │       ├── book.py
    │       ├── __init__.py
    │       ├── __pycache__
    │       └── user.py
    ├── config.py
    ├── fisher.py
    ├── helper.py
    ├── httper.py
    ├── Pipfile
    ├── Pipfile.lock
    ├── __pycache__
    └── yushu_book.p

# 程序入口文件 fisher.py

from flask import Flask
from app import create_app

app = create_app()

if __name__ == ‘__main__‘:
    # 生产环境 nginx + uwsgi
    app.run(host=‘0.0.0.0‘, debug=app.config[‘DEBUG‘], port=81)

# 初始化蓝图 app/__init__.py

from flask import Flask

def create_app():
    app = Flask(__name__)
    app.config.from_object(‘config‘)
    register_blueprint(app)
    return app

def register_blueprint(app):
    from app.web.book import web
    app.register_blueprint(web)

# config.py

DEBUG = False

# 初始化蓝图文件 app/web/__init__.py

from flask import Blueprint

web = Blueprint("web", __name__)

from app.web import book
from app.web import user

# 具体的视图文件 app/web/book.py

from flask import jsonify
from helper import is_key_or_isdn
from yushu_book import YuShuBook
from . import web

# 10.11.0.148:81/book/search/9787501524044/1
@web.route(‘/book/search/<q>/<page>‘)
def search(q, page):
    # 判断搜索关键字是key还是isdn编码
    isbn_or_key = is_key_or_isdn(q)
    if isbn_or_key == ‘isbn‘:
        result = YuShuBook.search_by_isbn(q)
    else:
        result = YuShuBook.search_by_keyword(q)
    # return json.dump(result), 200, {‘content-type‘: ‘application/json‘}
    return jsonify(result)

# 具体的视图文件 app/web/user.py

from flask import Blueprint
from . import web

@web.route("/user/create")
def create_user():
    print("create user")
    return "create user"

# 工具类文件 app/helper.py

def is_key_or_isdn(word):
    isbn_or_key = "key"
    # isdn 13 13位数字
    # isdn 10 包括1-10位数字,并且带有一些 - 中划线
    short_word = word.replace("-", "")
    if len(word) == 13 and word.isdigit():
        isbn_or_key = "isbn"
    if "-" in word and len(short_word) == 10 and short_word.isdigit():
        isbn_or_key = "isbn"

    return isbn_or_key

# 处理book搜索的文件 app/yushu_book.py

from httper import HTTP

class YuShuBook(object):
    isbn_url = ‘http://t.yushu.im/v2/book/isbn/{}‘
    keyword_url = ‘http://t.yushu.im/v2/book/search?q={}&count={}&start={}‘

    @classmethod
    def search_by_isbn(cls, isbn):
        url = cls.isbn_url.format(isbn)
        result = HTTP.get(url)
        return result

    @classmethod
    def search_by_keyword(cls, keyword, count=15, start=0):
        url = cls.keyword_url.format(keyword, count, start)
        result = HTTP.get(url)
        return result

# 处理http请求工具类文件 app/httper.py

import requests

class HTTP(object):
    @staticmethod
    def get(url, return_json=True):
        r = requests.get(url)
        # if r.status_code == 200:
        #     if return_json:
        #         return r.json()
        #     else:
        #         return r.text
        # else:
        #     if return_json:
        #         return {}
        #     else:
        #         return ""
        if r.status_code != 200:
            return {} if return_json else ‘‘
        return r.json() if return_json else r.text

原文地址:https://www.cnblogs.com/reblue520/p/10337905.html

时间: 2024-08-30 04:13:23

flask蓝图的简单使用的相关文章

flask 蓝图

转自:http://spacewander.github.io/explore-flask-zh/7-blueprints.html 蓝图 什么是蓝图? 一个蓝图定义了可用于单个应用的视图,模板,静态文件等等的集合.举个例子,想象一下我们有一个用于管理面板的蓝图.这个蓝图将定义像/admin/login和/admin/dashboard这样的路由的视图.它可能还包括所需的模板和静态文件.你可以把这个蓝图当做你的应用的管理面板,管它是宇航员的交友网站,还是火箭推销员的CRM系统. 我什么时候会用到

Flask蓝图目录、Flask-SQLAlchemy、Flask-Script、Flask-Migrate

一.Flask蓝图目录 我们之前写的Flask项目都是自己组织的目录结构,其实Flask官方有其推荐的目录结构,以下就是一个符合官方推荐的Flask小型应用的项目结构目录示例,如下: 如图,这就是我们建立好的一个目录结构,一层一层的看一下,首先是app目录,它就是我们的主应用程序目录了,其中有一个__init__.py文件,里面的内容如下: from flask import Flask from .views.acc import acc_bp from .views.user import

Flask 蓝图进行路由分发

Flask 蓝图进行路由分发 Flask虽然说是一个轻型web框架,但也总不能用一个py文件写完全部view吧,所以我们要把路由分到不同的py文件中.这就需要用到蓝图了. 一 创建一个py文件 用于处理分过来的url,如创建music.py from flask import Blueprint music = Blueprint('music', __name__) @music.route("/") # 即 /music/ def roo(): return "music

flask蓝图的使用

首先,我对蓝图的理解相对通俗,就是觉得蓝图对于视图方法模块化.大项目协同开发过程中的一个很好的工具. 1.下图是我们通常情况下使用的项目组织结构 看一下视图方法: #views.py 1 from app import app 2 3 4 @app.route('/user/index') 5 def index(): 6 return 'user_index' 7 8 @app.route('/user/show') 9 def show(): 10 return 'user_show' 11

[py]flask蓝图的使用

参考 flask挺挺轻巧的, 因此玩一玩它. 如果用它做大型点的项目, 就用到了它的蓝图组织项目. 一时半会不太清楚这玩意怎么用, 得撸一撸py基础了. 我搞了个movie小的flask栗子来用用蓝图小功能, git地址如下. 项目分前台 home, 后台admin模块.使用蓝图来组织. https://github.com/lannyMa/movie 首先,我对蓝图的理解相对通俗,就是觉得蓝图对于视图方法模块化.大项目协同开发过程中的一个很好的工具. 1.下图是我们通常情况下使用的项目组织结构

Flask - 蓝图和子域名

 蓝图: 之前我们写的 url 和视图函数都是在同一个文件,如果项目比较大的话,这显然不是一个合理的结构,而蓝图可以优雅的帮我们实现这个需求.例如: from flask import Blueprint bp = Blueprint('user', __name__, url_prefix='/user/') @bp.route('/') def index(): return u"用户首页" @bp.route('/profile/'): def profile(): return

11.5 Flask 蓝图,数据库链接

蓝图 使用场景 如果代码非常多,要进行归类.不同的功能放在不同的文件,把相关的视图函数也放进去. 蓝图也就是对flask的目录结构进行分配(应用于小,中型的程序) 当然对于大型项目也可以通过   url_prefix 加前缀的方式实现 使用方法 # __init__.py from .views.account import ac from .views.user import us app.register_blueprint(ac) app.register_blueprint(us) #

【Flask蓝图】 &#397375;

原文: http://blog.gqylpy.com/gqy/339 "> 补充一个装饰器 errorhandler 用于重定义错误页面,用法如下: from flask import Flask app = Flask(__name__) @app.errorhandler(404) # 重新定义404错误页面 def error404(args): print(args) # args是错误详细信息 return f"您访问的页面不存在或者走丢了{args}" @a

Python Flask 蓝图Blueprint

1. 目录结构 2. manage.py类似于django中manage import fcrm if __name__ == '__main__': fcrm.app.run(port=8001) 3. fcrm下面的__init__.py文件 from flask import Flask from .views import account #导入fcrm.views目录下account.py模块, from .views import order #导入fcrm.views目录下orde