【问题标题】:CodeIgniter & Datamapper as frontend, Django Admin as backend, database tables inconsistentCodeIgniter & Datamapper 作为前端,Django Admin 作为后端,数据库表不一致
【发布时间】:2010-03-25 17:11:09
【问题描述】:

我为我正在使用 Django 作为管理后端的站点创建了一个数据库。然而,由于网站所在的服务器无法支持 Python,我发现自己需要用 PHP 做前端,因此我决定使用 CodeIgniter 和 Datamapper 来映射模型/关系.

然而,DataMapper 要求表格采用特定格式才能工作,而 Django 以不同的方式映射其表格,使用 App 名称作为表格中的前缀。我已经尝试在 datamapper 中使用前缀和 join_prefix 变量,但仍然无法正确映射它们。

有人用过这个组合吗?如果是这样,如何解决数据库表名不一致的问题?有什么东西可以让它们一起工作吗?

----编辑:后端澄清--- 让我澄清一下:我将从指向 Python 就绪服务器的子域运行管理员。但是,由于公司自己加入了某些约束/绑定合同,我无法从仅 php 的网络服务器中移动主域名。并且由于 seo 的目的不想使用伪装/掩蔽。

我正在使用 django 管理员,因为我正在使用一些软件包来制作漂亮/实用的管理员,例如用于管理模板的 grappelli,以及用于编辑新闻故事的编辑器等。还使用 photologue 来管理照片/画廊。等等

【问题讨论】:

    标签: django codeigniter django-models django-admin codeigniter-datamapper


    【解决方案1】:

    如果您的问题只是让 Django 使用与其他软件相同的表,请在模型中使用 db_columndb_table 参数。

    http://www.djangoproject.com/documentation/models/custom_columns/

    【讨论】:

    • 恰恰相反,Django 很好,我想用它的 CodeIgniter 和 DataMapper 来使用 Django Tables
    • 这毕竟是正确的解决方案,根据需要重命名表并在 django 模型中使用 db_table 参数。
    【解决方案2】:

    两个明显的解决方案:

    1. 不要破解一个或两个以使其彼此良好工作,而是在 PHP/CodeIgniter 代码中模拟 Django 管理员。 **
    2. 获取支持 Django 的服务器。在 Django 中制作前端。

    就时间而言,这些解决方案中的任何一个都比尝试使用不同的编程语言使两个不同的框架很好地融合在一起要少涉及。我无法想象未来需要维护以确保永久的兼容性和互操作性。

    另外,我假设:

    我为我正在使用 Django 作为管理后端的网站创建了一个数据库

    您的真正意思是您使用 Django 为您的应用程序建模,并且您还打算在 Django 管理员中管理此建模所产生的数据库。 (在这种情况下,您的模型层已经完成,应该尝试在 Django 中构建站点的其余部分)

    如果是这种情况,那么在您的模型中,您将需要定义 DataMapper 期望的确切列名 (db_column),以及手动定义表名 (db_table),包括 M2M 表。

    如果 DM 需要不同的名称,您可能还必须手动定义所有主键。

    还有:

    如果服务器不支持 Python,你打算在哪里运行你的后端?不同的服务器?本地?这个计划没有多大意义。

    ** 我不建议尝试这个。在我了解 Django 的管理员之前,我一直在尝试创建一个与 Django 管理员有很多相同想法的 CI 后端。当然,在发现 Django 之后,我立即放弃了 CI 工作,并继续使用我发现的更令人惊叹的框架,并且开发速度更快。

    【讨论】:

    • 由于这个项目给我的限制,你的两个选择几乎都是不可能的。我确实使用 Django 为我的应用程序建模,并打算使用管理员来管理站点。您的意思是将数据库名称更改为 CodeIgniter 所需的名称,然后使用 db_table/db_column 名称在 Django 中相应地进行更改?
    • 让我澄清一下:我将从指向 Python 就绪服务器的子域运行管理员。但是,由于公司自己加入了某些约束/绑定合同,我无法从仅 php 的网络服务器中移动主域名。我正在使用 django 管理员,因为我正在使用一些软件包来制作漂亮/实用的管理员,例如用于管理模板的 grappelli,以及用于编辑新闻故事的编辑器等。还使用 photologue 来管理照片/画廊。等
    【解决方案3】:

    据我了解,您计划使用 Django 只是因为 django-admin,而您正尝试将 CI 用于实际站点,因为服务器运行 PHP,对吗?

    那么你为什么不使用框架来生成类似于 Django 的管理员但你可以在你的服务器上运行的东西呢?

    Symfony Framework 有一个非常好的admin generator,本着 Django 的精神,您也许可以在您的服务器上运行它。这将使您免于@jonwd7 回答后可能出现的维护噩梦

    【讨论】:

    • 这意味着失去了 Django 附带的可重用包的优势,例如 grappelli、pressroom、photologue 等,这是我使用 django 作为管理员的主要原因。
    猜你喜欢
    • 2023-03-08
    • 2019-01-05
    • 2018-05-16
    • 1970-01-01
    • 1970-01-01
    • 2017-03-10
    • 2014-10-21
    • 2021-10-25
    • 2016-11-15
    相关资源
    最近更新 更多