我在看django mingus的已安装应用程序:
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.admin',
'django.contrib.sitemaps',
'django.contrib.flatpages',
'django.contrib.redirects',
'django_extensions',
'tagging',
'djangodblog',
'disqus',
'basic.inlines',
'basic.blog',
'basic.bookmarks',
'basic.media',
'oembed',
'flatblocks',
'dbtemplates',
'navbar',
'sorl.thumbnail',
'template_utils',
'django_proxy',
'django_markup',
'google_analytics',
'robots',
'basic.elsewhere',
'compressor',
'contact_form',
'honeypot',
'sugar',
'quoteme',
'mingus.core',
'debug_toolbar',
'django_twitter',
'django_bitly',
'staticfiles',
'tinymce',
'django_wysiwyg',
'cropper',
'memcache_status',
'request',
)
这确实有点臃肿。但我认为这并没有看上去那么糟糕,因为django只使用请求的内容,因为它不会为每个请求加载每个应用程序,而是只在调用它时加载它?如果没有,有人能揭开这个过程的神秘面纱吗?在
显然,其中一些是第三方的,处理它们时将它们隔离在/apps中(如果有很多的话,甚至在它们的子目录中)是保持目录结构正常的一个很好的解决方案,正如lazerscience指出的那样。在
至于你自己的应用程序,这是一个很好的问题,一天两次在django上出现,我很乐意看到各种观点的综合。在
当我决定是否要制作一个单独的应用程序时,我通常会问自己:这个新应用程序的模型是否会与之前的应用程序完全不同?如果一个应用程序是关于人(比如说作者),而另一个是关于物质财富(比如,书),那么把它们分开是有意义的。需要自己的应用程序吗?显然不是。在
我知道其他开发者更关注应用程序的视图——他们会问自己,“我的调度器中会有多少个顶级术语?”从那里走。我认为这在很多情况下也是一个很好的方法,但是对于许多项目来说,大约90%的模型和视图将主要或完全与10%的顶级URL术语相关。在
一般来说,拥有大量的应用程序本身并不是坏事。只有当它成为团队的组织问题时,它才会变得糟糕。在
我认为在你的} folder within your project root 内,同时保留其他第三方应用程序,这样你就不会在你的
INSTALLED_APPS
中找到很多应用程序是很常见的。为了在包/目录结构中保留一些系统,我认为建议将你的应用程序放在^{PYTHONPATH
上接触其他地方。我认为使用类似PIP and virtualenv这样的工具来跟踪和组织应用程序是非常值得推荐的。 在这里您可以阅读另一篇关于useful directory structure for django projects的文章。在如果一个应用程序在你的
INSTALLED_APPS
中,django总是在启动时加载它的模型,并用这些类填充它的APP_CACHE
,但我认为如果你在处理传统的应用程序,这是一个可以忽略的开销。。。在编辑:还要考虑到应用程序在复杂程度上有很多不同,例如,
tinymce
主要只是提供了一个小部件和一些视图,但是没有模型,所以如果不使用它,它只会在urlresolver中添加一些URL,就这样。。。在嗯,Mingus是一个专门的项目,旨在演示多个可重用组件的使用,因此它使用其中很多组件并不奇怪。在
一打听起来不算太臃肿,说实话-我肯定做过更多的网站。但是在任何情况下,您不应该从请求的角度考虑:Django,或者更确切地说是mod\wsgi,不会为每个请求启动一个堆栈。相反,Apache动态地管理进程,它们在启动时加载所需的代码,并且该进程对于许多请求都是持久的。这是相当有效的。在
相关问题 更多 >
编程相关推荐