从python控制台应用程序到django作为UI最佳实践

时间:2014-07-09 16:56:10

标签: python django

我有一个在控制台中运行的现有python应用程序。此应用程序包含当前使用sqlite3作为其数据存储的功能。

我现在正在尝试使用Django作为演示文稿,似乎我需要一些帮助,如何加快从控制台到支持Web的用户界面的过渡。

我知道网络是无状态的,应用程序主要是消费几个人。

我的大多数数据都在dict中,我可以将其转换为JSON。我正在寻求有关我需要了解的内容的善意建议,或者如果你们中的任何人遇到过这种需要迁移到以网络为中心的演示文稿的应用程序。

它主要是基于查询的函数,几乎没有传递参数/参数,但似乎我在python中遇到数据库访问问题,因为我的大多数数据库查询都是原始sql。

提前谢谢你们。

(如果有任何现有项目我可以作为模式使用,请帮助与我分享)

==========

分辨率

将此添加到manage.py中:

sys.path.insert(0, os.path.join(BASE_DIR, 'app', 'engine'))

现在我可以打电话给我的引擎'包类/脚本。

1 个答案:

答案 0 :(得分:1)

这是一个非常开放的问题,但我会解决将数据库移动到Django的模型和自定义查询的问题。


数据层

在构建应用程序之前,您可以尝试使用manage.py命令inspectdb将当前架构描述为Django模型。它不会为您编写模型层,但可以帮助您入门。

正如@joran-beasley所提到的,sqlite不适合作为多客户端应用程序的生产数据库。 Postgres在Django社区中被广泛使用,但它几乎不支持原始SQL。

可以使用XML,YAML或JSON迁移一些数据,并使用django的de / serializers或loaddata manage.py命令导入它们。考虑将自定义管理器添加到作为1对1,外键或多对多字段的目标的模型中。您可以添加自定义get_by_natural_key方法,该方法可以简化包含外键的数据的/ /序列化等。


查询

Django的QuerySet api是包装SQL的精彩包装器,但它有一些局限性。花一些时间来审核capabilities and shortcomings以确定它是否有助于或阻碍您的需求。

如果你想继续进行原始查询,Django也可以help you,因为它提供了诸如rawextra之类的辅助查询集方法。您可以完全使用其django.db.connection.cursor类来避免模型层。


我不能说任何可以帮助您过渡的其他内容,但您可能会发现Django基于类的通用视图,例如DetailViewListViewUpdateViewDeleteView可能有助于在网络上设置一些更基本的界面。