Tei*_*ion 37 python django django-models
我已经开始在自己的本地应用程序上运行浏览器.最近经历了django教程,我认为使用django而不仅仅是普通的python可能会更好.
有一个问题:我至少有20个型号,每个型号都有很多功能.很简单,它将创建一个巨大的模型文件,也可能是巨大的视图.我该如何拆分它们?
这些模型都是相关的,所以我不能简单地将它们分成单独的应用程序吗?
Jar*_*die 72
这是一个非常普遍的需求......我无法想象涉及10,000个行长的models.py文件:-)
您可以将models.py
文件(以及views.py)拆分为pacakge.在这种情况下,您的项目树将如下所示:
/my_proj
/myapp
/models
__init__.py
person.py
Run Code Online (Sandbox Code Playgroud)
该__init__.py
文件使该文件夹成为一个包.唯一的问题是确保Meta
为模型定义一个内部类,指示模型的app_label,否则Django将无法构建模式:
class Person(models.Model):
name = models.CharField(max_length=128)
class Meta:
app_label = 'myapp'
Run Code Online (Sandbox Code Playgroud)
完成后,在您的__init__.py
文件中导入模型,以便Django和sync db可以找到它:
from person import Person
Run Code Online (Sandbox Code Playgroud)
这样你仍然可以做到 from myapp.models import Person
S.L*_*ott 31
"我至少有20个型号" - 这可能是不止一个Django"应用程序",更像是一个带有几个小"应用程序"的Django"项目"
我喜欢围绕具有少量(1到5)模型的主题或主题区域进行分区.这成为Django"应用程序" - 并且是可重用性的有用单元.
整个"项目"是一组应用程序,它们呈现由单独部分构成的集成事物.
这也有助于项目管理,因为每个"app"都可以成为一个sprint,并在最后发布.
Nat*_*anD 16
这些模型都是相关的,所以我不能简单地将它们分成独立的应用程序吗?
您可以将它们分成单独的应用程序.要在另一个应用程序的一个应用程序中使用模型,您只需导入它就像导入django.contrib应用程序一样.
在一个应用程序中拥有20个模型可能表明您应该将其分解为较小的模型.
Django应用程序的目的是拥有一个小的单一用途代码,它可以很好地融合在一起.
因此,如果您有一个电子商务网站,您可能有一个shopping_cart应用程序,一个结算应用程序,等等.
请记住,相互依赖的应用程序确实没有问题(尽管如果它们可以分离,它总是更好),但是你不应该让应用程序执行两个截然不同的事情.
文章Django提示:布置应用程序可能对您有所帮助.和往常一样,把你读过的所有东西都拿出来(包括这个答案).
归档时间: |
|
查看次数: |
11696 次 |
最近记录: |