【问题标题】:Setting up Python Flask app with admin section使用管理部分设置 Python Flask 应用程序
【发布时间】:2013-03-14 20:32:19
【问题描述】:

在此之前我已经构建了一些只读的小型 Flask 应用程序,我真的很喜欢这个过程。现在我正在向 Flask 应用程序添加一个管理部分,我正在寻找一些指导。

当前目录结构如下:

├── Makefile
├── Procfile
├── app.py
├── requirements.txt
├── static
│   ├── css
│   ├── fonts
│   ├── img
│   └── js
└── templates
    ├── about.html
    ├── base.html
    ├── contact.html
    └── index.html

我的 app.py 文件如下所示:

import os
from flask import Flask, render_template

app = Flask(__name__)
app.debug = True


# MAIN APPLICATION
@app.route('/')
@app.route('/work/<gallery>/')
def index(gallery='home'):
    return render_template('index.html', gallery=gallery)


@app.route('/views/<view>/')
def view(view):
    return render_template(view + '.html')


@app.route('/data/<gallery>/<size>/')
def data(gallery='home', size='md'):
    data = '[\
        {"image": "/static/img/photos/md/img_1.jpg","color": "white"},\
        {"image": "/static/img/photos/md/img_2.jpg","color": "white"},\
        {"image": "/static/img/photos/md/img_3.jpg","color": "black"}\
        ]'
    return data


if __name__ == '__main__':
    # Bind to PORT if defined, otherwise default to 5000.
    port = int(os.environ.get('PORT', 5000))
    app.run(host='0.0.0.0', port=port)

我做了一些研究,发现Blueprints frameworkFlask-Admin 似乎可以一起工作。有没有人有可能更有效或更容易设置的替代建议?

【问题讨论】:

    标签: python flask


    【解决方案1】:

    蓝图允许您将功能分组到独立的模块中。

    如果您觉得您的服务非常小,则无需使用蓝图 - 您可以向 Flask 应用程序添加路由,就像您在示例中所做的那样。

    但是,如果应用程序变得更大,最好使用蓝图将其拆分为更小的部分。在您的示例中,“工作”是第一个可能的蓝图,“视图”是另一个,等等。

    Flask-Admin 允许您构建管理界面 a-la Django admin。您如何构建应用程序的其余部分并不重要 - 您添加 Flask-Admin 并且它可以正常工作。

    【讨论】:

    • 啊。这就说得通了。前端和后端总共可能只有不到 10 条路线。你认为我应该在“真正的”管理文件夹中有一个单独的 app.py,还是可以在根级 app.py 文件中一次映射整个应用程序的路由?
    • 不,您在应用程序和 Flask-Admin 之间共享应用程序。如果您有 5 个视图并且其中没有太多代码,则无需将它们移动到不同的 python 模块。如果您打算扩展,请让 app.py 包含 Flask 应用程序实例以及配置和插件初始化,并将您的视图放在单独的 views.py 中。只是不要忘记导入视图模块以使装饰器工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-01
    • 2017-01-14
    • 2021-01-01
    • 2020-05-29
    • 1970-01-01
    • 2022-01-18
    相关资源
    最近更新 更多