使用不同的模板维护各种Flask安装

时间:2017-11-21 17:08:23

标签: python git python-3.x flask jinja2

我对这个主题进行了广泛的搜索,但结果却没有真正的结论性答案。然而,我确实遇到了潜在的解决方案和我自己的解决方案,但我不确定它们是否被完全推荐,甚至可以随着时间的推移进行维护。

所以对我的问题。让我们假设我开发了一个核心Flask应用程序,它将被用作博客引擎或定制CMS的关键部分。让我们把这个引擎MyFlaskCore称为同名。

MyFlaskCore可以作为应用程序的 核心 安装在完全独立的服务器上。让我们想象以下复杂性/大小:

|-- app
    |-- blueprint_one
            |-- __init__.py
            |-- views.py
            |-- forms.py
            |-- models.py
    |-- blueprint_two
            |-- __init__.py
            |-- views.py
            |-- forms.py
            |-- models.py
    |-- blueprint_three
            |-- __init__.py
            |-- views.py
            |-- forms.py
            |-- models.py
    |-- static
            |-- main.styles.scss
            |-- build
                   |-- main.bundle.css
    |-- templates
            |-- index.html
    |-- orm.py
    |-- database.py
    |-- config.py
    |-- __init__.py

这里的代码将通过Git维护。通过手动更新甚至自动更新服务的消费者可以通过git pull获得更改。虽然这对我的问题来说是多余的,但它有助于理解背景​​。

这是背景。

继续前进,让我们说MyFlaskCore引擎被四个不同的消费者使用。这些消费者中的每一个都使用核心引擎来为其使用提供后端服务。消费者永远不应该真正修改本地安装。

但是,每个最终消费者都将获得基本的入门模板,但这些模板旨在由每个消费者根据自己的意愿进行修改和个性化。在搜索之后,我找到了几个如何实现 的选项:

  1. 使用git子模块维护一个将引擎添加为依赖项的存储库
  2. 删除模板目录或文件中的Git索引[git update-index --assume-unchanged TEMPLATES]
  3. 我自己可能的解决方案是使用位于应用程序目录之外的位置的模板。例如,应用程序存储库根目录中的实例文件夹。如果找到本地模板,这将覆盖现有的基本模板。
  4. 从外部资源或服务渲染模板字符串。我个人觉得这会增加不必要的集成开销。
  5. 将模板存储在数据库中。
  6. 上述每个解决方案都提供了一种独特的方法,但我觉得每种解决方案都提供了独特的关注点,感觉就像是解决方法

    回顾:Core Flask应用程序,允许在用户的基础上跨安装进行各种模板实现。自定义和正确版本控制的最佳实践和权衡

    据我所知,通过允许消费者修改模板,这些模板在技术上违反了版本控制,因为它们不会被完全跟踪或忽略。我可能会在这里遗漏一些明显的东西,如果这似乎是一个没有实际意义的话我真诚的道歉。

    重要的是主要的应用程序代码可以连续发布,消费者可以在可用时更新,但仍然保持自己的模板设计

    社区中是否有人对此问题采取更可持续的方法?我建议的解决方案的注意事项会很棒!或者即使建议这样做?替代方案也很棒!

    非常感谢:)

0 个答案:

没有答案