是的,您可以创建一个名为 utils 的应用程序,您应该在其中放置任何常见的模型、序列化程序、方法等。
如果您需要公共模型,请在utils/models.py 中创建它们
如果你需要commons函数,在utils/mixins.py创建一个Mixin Class实现这些方法
我们调用Mixin Class,这是一个python 类,您可以在其中放置任何类型的方法,以便在您的视图/模型/序列化器上重用它。
此外,在通用应用程序中定义模型是一个很好的做法,因为您可以避免循环依赖,如果您在 app A 中定义 modelX,那么您将其导入您的 app B,如果对于某些原因,app A 需要来自app B 的一些模型,你会得到一个循环导入错误。
关于 mixin 的示例
我们有一个正常的看法
class MyView(View):
redirect_field_name = 'redirect_to'
.....
假设我们只允许登录用户获取它。我们只需要 import login required mixin 并添加它
from django.contrib.auth.mixins import LoginRequiredMixin
class MyView(LoginRequiredMixin, View):
login_url = '/login/'
redirect_field_name = 'redirect_to'
检查用户是否登录的逻辑在 LoginRequiredMixin 类中完成。
这也适用于模型、序列化器等。