I like a small thing to be added in new django release.

103 views
Skip to first unread message

Ratan Kulshreshtha

unread,
Jun 18, 2016, 9:42:20 AM6/18/16
to Django developers (Contributions to Django itself)
hello, everyone, I think that when we make new Django app inside by running django-admin startapp <app-name> or by python manage.py startapp <app-name> name of app shoul be added automatically in settings.py file in project directory.

If you think my suggestion is good then how can I implement it, any guidance will be helpful

Shai Berger

unread,
Jun 18, 2016, 11:52:19 AM6/18/16
to django-d...@googlegroups.com
Hi Ratan,

On Saturday 18 June 2016 14:35:08 Ratan Kulshreshtha wrote:
> hello, everyone, I think that when we make new Django app inside by running
> django-admin startapp <app-name> or by python manage.py startapp <app-name>
> name of app shoul be added automatically in settings.py file in project
> directory.
>

The problem with this suggestion is that many projects manage their apps in
different ways; as an example, some projects separate their included apps into
groups, and then have something like

INSTALLED_APPS = GROUP1_APPS + GROUP2_APPS + GROUP3_APPS

for some other projects, there are different settings files for different
deployments, with some apps being included only in some settings, etcetera.

So, getting a general feature to just add your app to the settings file to work
across these use-cases is hard, and doing something simplistic will, in many
cases, create more work for developers than it will save. Thus, I think that
adding this as a general feature to Django is probably not a good idea.

> If you think my suggestion is good then how can I implement it, any
> guidance will be helpful

On the other hand, you can do something simple in your own project, along
these lines:

Create a text file, called (for example) "automatic_apps.txt". This file will
include application names, one app in each line.
In your settings file, do something like:

INSTALLED_APPS = [
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
] + [line.strip() for line in open("automatic_apps.txt")]

and finally, write your own startapp command -- maybe call it autoapp -- which
invokes Django's startapp, and also adds the new app's name to
automatic_apps.txt.

Generally speaking, the order of apps is important (they can override parts of
each other, and the order controls who overrides who) so separating some of
the apps to a separate file may be counter productive.

HTH,
Shai.
Reply all
Reply to author
Forward
0 new messages