python - 用于大型应用程序的 Django 风格的 Flask URL 模式

标签 python django flask url-mapping

我开始使用 Django 构建网络应用程序,现在我的大部分项目都依赖于 Flask。我认为 Flask 中的装饰器 @app.route 很简单,但是一旦文件变得越来越大,“django 风格”的 url 映射似乎更受欢迎。

为了实现这一点,我使用了一种变通方法来模仿 Django 的 url 映射,但我不确定这是否是一个好的做法,并且担心可能会出现一些性能问题。

这是一个最小的例子:

# project/views.py
def index():
    print "hello index!"

def get_users():
    print "hello users!"

# project/urls.py
from project import views

# store url mapping arguments in a list of tuples following this pattern:
# (endpoint, methods, viewfunc)

urls = [
  ('/', ['GET'], views.index),
  ('/users', ['GET'], views.get_users)
]

然后最后:

# project/__init__.py
from flask import Flask
from project.urls import urls

app = Flask(__name__)
# Loop through the urls list to add all url rules to app
for url in urls:
    app.add_url_rule(url[0], methods=url[1], view_func=url[2])

这个结构没有问题,我看到我的代码库组织更清晰,但不知何故,我对在我的 __init__.py 中有一个 loop 感到不自信。

有没有人有更好的解决方案?

最佳答案

您可以 set up an application factory :

def create_app(name):
    app = Flask(name)
    for url in urls:
        app.add_url_rule(url[0], methods=url[1], view_func=url[2])
    return app

app = create_app(__name__)

关于python - 用于大型应用程序的 Django 风格的 Flask URL 模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31680048/

相关文章:

python - Django 生成测试数据非常慢

python - django.db.utils.DataError : numeric field overflow - django 错误

python - 无论 Content-Type header 如何,都在 Python Flask 中获取原始 POST 正文

用于模拟 session 的 Python 模拟测试

python - 使用存储在字典中的字符串调用类

python - 控制 argparse 帮助参数列表的格式?

python - ContentFile 未保存在 Django 模型 FileField 中

python - 为登录django创建测试脚本

python - 无法从 Flask 获取 json 网络 token

python - 如何修复 opt parse optparse.OptionError : invalid long option string '-submitted.cl' : must start with --, 后跟非破折号