了解Django中的可重用应用

4szc88ey  于 2023-08-08  发布在  Go
关注(0)|答案(1)|浏览(110)

我正在使用Django和Django-rest-framework构建一个后端REST API,用于场馆售票和粉丝预订座位。到目前为止,我有一个名为“concert”的整体应用程序,其中包含我所有的models.pyserializers.pyviews.py。每个文件现在都有1000多行,所以我在考虑如何将代码分割成更小的块。
我看了James班尼特的Reusable Apps演讲,但我不明白为什么有人会创建可重用的应用程序。
例如,我有两个模型ConcertConcertTicket。显然,ConcertTicket有一个指向Concert的ForeignKey引用,因此模型关系朝这个方向流动。另一方面,在序列化器内部,ConcertSerializer依赖于ConcertTicketSerializer,因为我使用后者作为嵌套的序列化器。看起来如果我把它分成concertticket应用程序,我会有一个非常奇怪的依赖关系,其中ticket.models依赖于concert.models,但concert.serializers依赖于ticket.serializers
我将无法将我的应用程序分享给Django社区,因为它对行业来说是多么的专业,所以我不明白为什么有人会试图创建可重用的应用程序。这仍然是Django-rest-framework的“最佳实践”吗?使用concert_models.pyconcertticket_models.pyconcert_serializers.pyconcertticket_serializers.py维护一个单体应用程序不是更好吗?

bwleehnv

bwleehnv1#

考虑到你的例子,为了使它可重用,你可以:
1.在Tickets应用程序中创建一个Ticket和一个Event类。这个事件有一个事件类型属性,所以你可以定义不同类型的事件,比如CONCERT。

  1. Ticket类将与Event类有关系。
    1.在Concerts应用程序中,创建一个Concerts类作为Event类的代理,您可以在其中为此Concert类定义特定的管理器,并确保事件类型属性始终为“CONCERT”。
    这样,您的票务应用程序将可重复使用的任何类型的事件。您的Concert应用程序将实现Concert特定的逻辑和数据模型。
    所以我会说是的,仍然有一个可重用的应用程序的情况下,这是一个优秀的原则时,设计软件。

相关问题