[Solved]-Django: the role of the project name

3šŸ‘

āœ…

Main project name is used as a base for your namespace.

By default, you will have in settings.py line: ā€œROOT_URLCONF = ā€˜something.urls'ā€.

To change a project name, you need to change every single import that is referring to it.

Of course you can always use modules without ā€˜somethingā€™ prefix, then you must ensure that there will be no name/namespace conflict between modules. Iā€™m using this option, because I can have same code in a few copies without additional hassle.

šŸ‘¤Jerzyk

1šŸ‘

Late to this party, but for future reference this may help somebody. Iā€™ve just had to change a project name because it clashed with the name of a third-part app. Itā€™s easier to change a project name than an app name! (Django 1.11)

Folder structure

project/
    manage.py
    project/
         settings.py
         urls.py
         wsgi.py
    venv/
  1. If using a virtual environment in venv, generate an up to date requirements.txt with pip freeze
  2. Rename both project/ folders to newproject
  3. Change project to newproject in the python files:

manage.py, look for DJANGO_SETTINGS_MODULE

settings.py, look for DJANGO_SETTINGS_MODULE and WSGI_APPLICATION, and a comment. You can and should leave the name of the database and the database user unchanged, assuming you want to keep the data.

urls.py, in a triple-quoted string

wsgi.py, DJANGO_SETTINGS_MODULE plus a comment

  1. If using a virtual environment, you need to recreate it. I renamed venv to old.venv, then virtualenv-3 venv, then use pip install and the requirements file you generated at 1. Trash old.venv when sure the new one is working AOK.

  2. /path/to/project will also feature in system config files such as /etc/nginx and a .service file for gunicorn, which will need changing to /path/to/newproject.

  3. Restart the server and test. Should be working.

Now you can add an app called project to your INSTALLED_APPS!

I now know that itā€™s a good idea to call in-house Django projects ${my_org_name}_something, or similar, so they wonā€™t clash with third-party apps.

šŸ‘¤nigel222

Leave a comment