代码之家  ›  专栏  ›  技术社区  ›  meder omuraliev

对于中高规模的站点,在您的项目根目录中有十几个django应用程序是典型的吗?不觉得臃肿吗?

  •  4
  • meder omuraliev  · 技术社区  · 14 年前

    我在看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',
    )
    

    3 回复  |  直到 14 年前
        1
  •  5
  •   Bernhard Vallant    14 年前

    我认为在你的网站上找到很多应用程序是很常见的 INSTALLED_APPS . 为了在包/目录结构中保留一些系统,我认为建议将应用程序放在 apps folder within your project root ,同时保留其他第三方应用程序,您不可在计算机上的其他位置接触 PYTHONPATH PIP and virtualenv 跟踪并组织应用程序。 在这里你可以读到另一篇关于 useful directory structure for django projects

    如果应用程序在您的 已安装的应用程序 django总是在启动时加载它的模型并填充它的 APP_CACHE 但我认为这是一个开销,如果你处理的是传统的应用程序,你可以忽略。。。

    编辑:也要考虑到应用程序在复杂性上有很大差异,例如 tinymce 主要只是提供了一个小部件和一些视图,但没有模型,所以如果不使用它,它只会向urlresolver添加一些url,就这样。。。

        2
  •  1
  •   Daniel Roseman    14 年前

    嗯,Mingus是一个专门针对演示多个可重用组件的使用的项目,所以它使用了相当多的组件也就不足为奇了。

    一打听起来不太臃肿,说实话-我肯定做了更多的网站。但是在任何情况下,您都不应该从请求的角度来考虑:Django,或者更确切地说是modèwsgi,不会为每个请求启动一个堆栈。相反,Apache动态地管理进程,它们在启动时加载所需的代码,并且该进程对许多请求保持不变。这是相当有效的。

        3
  •  1
  •   jMyles    14 年前

    至于你自己的应用程序,这是一个伟大的问题,出现在#django一天两次左右,我想看到一个综合的观点范围。

    当我决定是否制作一个单独的应用程序时,我通常会问自己:这个新的应用程序会有一个与之前的应用程序完全不同的知识类型的模型吗?如果一个应用程序是关于人的(比如,作者),而另一个是关于物质财富的(比如,书籍),那么将它们分开是有意义的。“chapter”需要自己的应用程序吗?显然不是。

    我知道其他开发人员更关注应用程序的视图,他们会问自己,“我的dispatcher中有多少顶级术语?”然后从那里开始。我认为这在很多情况下也是一个好方法,但是对于许多项目来说,大约90%的模型和视图将主要或专门与10%的顶级URL术语相关联。

    一般来说,拥有一大堆应用程序本身并不坏。只有当它成为团队的组织问题时,它才会变得糟糕。