我正在使用Django和Django-rest-framework构建一个后端REST API,用于场馆售票和粉丝预订座位。到目前为止,我有一个名为“concert”的整体应用程序,其中包含我所有的models.py
,serializers.py
和views.py
。每个文件现在都有1000多行,所以我在考虑如何将代码分割成更小的块。
我看了James班尼特的Reusable Apps演讲,但我不明白为什么有人会创建可重用的应用程序。
例如,我有两个模型Concert
和ConcertTicket
。显然,ConcertTicket
有一个指向Concert
的ForeignKey引用,因此模型关系朝这个方向流动。另一方面,在序列化器内部,ConcertSerializer
依赖于ConcertTicketSerializer
,因为我使用后者作为嵌套的序列化器。看起来如果我把它分成concert
和ticket
应用程序,我会有一个非常奇怪的依赖关系,其中ticket.models
依赖于concert.models
,但concert.serializers
依赖于ticket.serializers
。
我将无法将我的应用程序分享给Django社区,因为它对行业来说是多么的专业,所以我不明白为什么有人会试图创建可重用的应用程序。这仍然是Django-rest-framework的“最佳实践”吗?使用concert_models.py
、concertticket_models.py
、concert_serializers.py
、concertticket_serializers.py
维护一个单体应用程序不是更好吗?
1条答案
按热度按时间bwleehnv1#
考虑到你的例子,为了使它可重用,你可以:
1.在Tickets应用程序中创建一个Ticket和一个Event类。这个事件有一个事件类型属性,所以你可以定义不同类型的事件,比如CONCERT。
1.在Concerts应用程序中,创建一个Concerts类作为Event类的代理,您可以在其中为此Concert类定义特定的管理器,并确保事件类型属性始终为“CONCERT”。
这样,您的票务应用程序将可重复使用的任何类型的事件。您的Concert应用程序将实现Concert特定的逻辑和数据模型。
所以我会说是的,仍然有一个可重用的应用程序的情况下,这是一个优秀的原则时,设计软件。