Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I find my project name in a Django project?

Tags:

django

pycharm

I have a pycharm project and, presumably, a Django project. Perhaps they are one and the same, perhaps not - I'm unsure as to the distinction.

Anyway, in my settings.py file (which is in the root of project directory, which is what I presume is my pycharm project) I have:

ROOT_URLCONF = 'dumpstown.urls'

Does that mean dumpstown is my project name? Or my pycharm project name? What is the distinction? Because I also have a folder called dumpstownapp and this has all my models.py and view.py files. I would have thought that dumpstownapp was the Django project, but I really don't know!

So, to be concise:

In this folder setup

folderA
    folderB
        views.py
        models.py
        <other stuff>
    templates folder
    settings.py
    <other stuff>

which is the "Django project name" ~ and by that I mean, if I have a UserProfile defined in my models.py (shown above) what would be the AUTH_PROFILE_MODULE entry I'd need for it? I'm getting several understandings from the django docs - I'd assume

dumpstownapp.models.UserProfile

But from the docs I'd get

dumpstownapp.UserProfile

Or maybe my app is called dumpstown? and then what do I get?

like image 790
bharal Avatar asked Jun 24 '12 16:06

bharal


People also ask

How do I name my Django project?

Modules should have short, all-lowercase names. Underscores can be used in the module name if it improves readability. Python packages should also have short, all-lowercase names, although the use of underscores is discouraged. So, 1 and 3 are both valid, but 3 would be the recommended approach.

What is Django project directory structure?

Django makes use of a directory structure to arrange different parts of the web application. It creates a project and an app folder for this. Creating a proper project and organizing it helps in keeping the project DRY (Don't Repeat Yourself) and clean.

What is a project in Django?

A project refers to the entire application and all its parts. An app refers to a submodule of the project. It's self-sufficient and not intertwined with the other apps in the project such that, in theory, you could pick it up and plop it down into another project without any modification.


2 Answers

FolderA is the Django project folder, and folderB is the Django app folder.

I haven't used a UserProfile, but according to the docs ( https://docs.djangoproject.com/en/dev/topics/auth/#storing-additional-information-about-users) it should contain a string containing the Django app name and the model name separated by a dot, so "dumpstownapp.UserProfile" should be correct. If you show the error someone can probably give you better help..

Django documentation used to say that the parent of the project folder (i.e. the parent of folderA) should be on the path, but I believe that has been changed to also include the project folder itself (i.e. folderA) -- since it makes sharing of Django apps much easier. PyCharm seems to assume that is the case, since pressing Alt+F7 to auto-add an import for a newly used module create an import statement that assumes folderA is on the import path (I'm a relative newcomer to PyCharm, and I'm using it on a project that started in the Django 0.96 era, so I might just have things set up wrong..) But folderA is both the Django and the PyCharm project (the .idea file is where PyCharm stores its project data).

like image 186
thebjorn Avatar answered Oct 01 '22 20:10

thebjorn


In one of my django-app git-submodule projects I needed to find out the name of the Django project that django-app/library was used in. To that end, I tried to get the path of the file that was being executed, find my package in the path and take the folder above it. However, it turned out that on the production server the project was deployed in a folder with a different name (a standard name like www or something along those lines). So this way is not fully reliable.

So I ended up setting a PROJECT variable in the django settings file and using that instead.

like image 36
Ibolit Avatar answered Oct 01 '22 19:10

Ibolit