我正在开发一个Django后端,它将被两个网站使用(即非营利组织的招聘板和营利性公司的招聘板),但我不知道如何才能更好地构造这两个网站的推拉更新。
网站的Django代码非常相似(假设超过95%的重叠),但是这些网站有稍微不同的模板和单独的CSS样式表,以便给每个人一个不同的外观和感觉。
我倾向于将其设置为一个单独的Django项目,该项目存储两个网站的CSS样式表,每个网站有不同的模板文件夹,并有多个设置文件(例如base、production_fprofit、production_nprofit)。为了方便后端当前或未来的任何差异,设置变量将指示使用代码的平台(例如,FPROFIT = True/FPROFIT = False),并在必要时调用此变量(例如if settings.FPROFIT == True: payment_required())。每当Django代码发生更改时,代码就会被推送到GIT中,并由两个平台(每个平台运行在一个单独的虚拟主机上,并具有它们自己的测试、暂存和生产环境)来执行。
我可以看到的两个主要选择包括保持项目分离,但共享应用程序(不确定版本控制/GIT是如何工作的)或“分叉”项目和像这样更新主分支:
Updating forked GitHub repo to match original's latest code and commits
虽然我的方法(例如,一个项目、单独的样式表和模板)对我来说是最直接的,但它感觉并不是很好的GITonic/Djangothonic/Pythonic。我担心我选择这个解决方案是因为我缺乏部署应用程序或在GIT中使用分叉的经验,而且我会遇到一些问题。因此,我很想听听你的想法和经验。
发布于 2017-12-03 17:12:19
有一次,我遇到了类似的情况,我不得不用不同的模板部署两个不同的web应用程序,但大多数情况下都是相同的后端(这里和那里有几行不同的代码)。
这就是我所遵循的方法:
Main repo的克隆。每次需要部署新应用程序时,只需为其创建一个克隆。
您将实现特定于webapp在它自己的repo中的特定实例的新特性,例如模型中的额外字段、视图中的额外行或更改模板和样式表。工作流
Main repo中创建核心应用程序。N-Profit webapp,请克隆Main repo。N-Profit代码,如样式表和FPROFIT = False等设置。N-Profit。F-Profit,克隆Main repo。FPROFIT = True等。F-Profit。您可以实现Main repo中所有new应用程序所共有的新功能,然后从这里提取新的更改。
https://stackoverflow.com/questions/47618785
复制相似问题