Django 应用到底是什么
我想从Rails转到Django,想开阔一下自己的视野,这让我心里冒出了一个问题。
我的Rails应用有点乱,因为我开发的方式比较随意,像是拼拼凑凑的。我很早就注意到,Django把项目和应用分开了。根据他们的网站,一个项目是由多个应用组成的,而一个应用可以被多个项目使用。
这让我很感兴趣,因为这样可以让我的网站各个部分之间的界限更加清晰。我试着找了一些例子和信息,但还是没能解答我的疑问,具体是:
那么,这样的应用到底有多大或多小呢?它们之间能否或应该紧密互动呢?
比如说,创建一个应用来处理用户的个人资料,另一个应用来处理这些用户的博客文章和评论,这样做聪明吗?(在我的网站上,一个用户可以有多个博客,且每个博客的个人资料可能不同)。或者说,它们应该以其他方式使用吗?
4 个回答
一个项目基本上就是你工作的地方……在这个项目里,你可以设置网址、项目的各种设置等等。
而一个应用程序则是定义了自己的一些数据模型和视图,用来在项目中使用。如果你愿意,可以把这些应用程序在不同的项目之间移动。
我强烈建议你去看看Django网站上的教程,因为这些教程会告诉你什么是项目和应用程序,如何管理它们,如何使用管理面板,以及如何让应用程序在多个项目中使用等等。
使用应用程序的目的是为了让它们可以重复使用。Django喜欢一个叫做DRY原则
的概念,DRY的意思是不要重复自己
。
一个应用程序应该尽量小,并且要松散耦合。也就是说,一个应用程序不应该依赖另一个应用程序才能正常工作。
Django建议为每个数据表写一个应用程序(当然不是绝对的,但当你想要扩展你的应用时,你肯定需要把数据表分开,以便配对应用程序。否则,你会发现维护代码会很困难。)
比如,你可以创建一个用户应用,一个销售应用,一个评论应用,一个文章应用。这样维护代码会更简单,如果你做得对,你可以在其他项目
中使用这个应用,几乎不需要修改。
项目
就是多个应用
的集合。用户应用、文章应用和评论应用可以组合在一起,形成一个项目,换句话说,就是一个网站。
如果你想学习Django,我建议你去看看:
http://docs.djangoproject.com/
有一句建议,绝对不要复制粘贴。这样不仅你的代码很可能会出错,而且你也不知道代码在做什么。如果你打算在你的项目中使用别人的代码,至少要自己输入一遍,这样你才能理解代码在做什么,或者至少能有个大概念。
自己写代码总是更好维护,但这并不意味着你要重新发明轮子,你可以使用库,查看它们的文档来正确使用。
文档和教程是你最好的朋友。
祝你好运。
Django应用其实就是一个很酷的名字,指的就是一个Python包。就这么简单。唯一让Django应用和其他Python包不同的地方在于,它应该出现在settings.py
文件里的INSTALLED_APPS
列表中,因为它里面包含了一些像模板、模型或者其他可以被Django自动识别的功能。
一个好的Django应用应该只做一件事情,而且做到最好,并且不应该和其他可能使用它的应用紧密耦合。Django的contrib
命名空间里提供了很多遵循这个原则的应用。
在你的例子中,一个好的应用设计方式是:可以有一个专门处理用户资料的应用(或者使用现成的用户资料应用),一个处理博客文章的应用(或者使用已经存在的博客应用),一个专门处理评论的应用,和博客文章分开(同样,你可以使用现成的评论应用),最后再有一个非常小的应用把这三者联系起来,因为它们之间不应该直接依赖。