首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何构造我的flask项目并将路由重构到单独的文件中

如何构造我的flask项目并将路由重构到单独的文件中
EN

Stack Overflow用户
提问于 2016-03-08 16:57:32
回答 2查看 900关注 0票数 3

目前,我将所有的烧瓶路由都放在一个文件中:

代码语言:javascript
复制
from flask import Flask, render_template
from flask import jsonify, make_response


app = Flask(__name__)
app.debug = True
@app.route('/skills')
def skillchart():
    return render_template('skills.html')



@app.route('/api/skills')
def getSkills():
    skills = {
        "HTML": [], #jsonify does not support arrays, but only dictionaries.
        "CSS": [],  # also I might add skills with subskills
        "SASS": [],
        "Bootstrap": []
    }
    return jsonify(skills)

if __name__ == '__main__':
    app.run() 

如何在单独的文件中最好地重构路由?(没有循环导入)

EN

回答 2

Stack Overflow用户

发布于 2016-03-08 23:49:15

您可以使用blueprints或导入包含路由的模块。

代码语言:javascript
复制
/app
    __init__.py     
    /views
      |- x.py
      |- y.py
      |- z.py

然后,您需要做的唯一一件事就是在初始化flask应用程序之后导入模块(例如在__init__.py中)。

代码语言:javascript
复制
app = Flask(__name__)
...
import views.x
import views.y
import views.z

所有路由现在都已在您的应用程序中注册。但是,您不应该从导入的模块中调用函数,因为这会创建循环依赖关系。

票数 0
EN

Stack Overflow用户

发布于 2016-03-09 15:30:29

按照建议使用蓝图被证明是最好的方法。

首先,我将视图重构为一个单独的文件,并在其中定义了一个蓝图。

代码语言:javascript
复制
#views/skills.py
from flask import Blueprint
from flask import jsonify, make_response

api_blueprint = Blueprint('api', __name__)


@api_blueprint.route('/api/skills/frontend')
def getSkills():
    skills = {
        "HTML/CSS": [
            "SASS",
            "Bootstrap"
        ]
    }
    return jsonify(skills)




@api_blueprint.route('/api/skills/backend')
def getBackendSkills():
    skills = {
        "Java": [],
        "Python": [
            "Django",
            "Flask"
        ],
        "Ruby": [
            "Ruby on Rails"
        ],
        "PHP": [
            "Laravel"
        ],
        "SQL": []
    }
    return jsonify(skills)

@api_blueprint.route('/api/skills/mixed')
def getMixedSkills():
    skills = {
        "Javascript": {
            'Frontend': [
                "angular.js",
                "knockout.js",
                "coffeescript",
                "jquery"
            ],
            'Backend': [
                "Node.js",
                "Express.js"
            ]
        }
    }
    return jsonify(skills)

然后在主文件(app.py)中导入并注册蓝图

代码语言:javascript
复制
from flask import Flask, render_template
from views.skills import api_blueprint

app = Flask(__name__)
app.debug = True




app.register_blueprint(api_blueprint)

@app.route('/skills')
def skillchart():
    return render_template('skills.html')


if __name__ == '__main__':
    app.run(threaded=True)

这个很好用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35862940

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档