Is there a naming convention for Django apps
Is there a preferred naming convention for creating a Django app consisting of more than one word? For instance, which of the following is preferred?
my_django_app
-
Update: Not allowed syntacticallymy-django-app
-
mydjangoapp
Recommended solution
While all of them may be options 1 and 3 are syntactically allowed, is there a preference? Looking at the way Django creates the table names by combining the app name and the model name with an underscore, I'm leaning against option #1.
Thoughts?
They must be valid package names. That rules out 2 ("import my-django-app" would be a syntax error). PEP 8 says:
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.
some good examples
- graphene_django
- users
- orders
- oauth2_provider
- rest_framework
- polls
in simple terms, app_name
should have short, all-lowercase names. Underscores can be used in the module name if it improves readability. also should have a short name and it can be a plural and singular name
App directory names must be a valid Python package name. This means that option 2 is completely inadmissible as a package name, although it can still be used for other purposes, such as documentation. In the end it comes down to personal style. If you prefer option 3 then use it.