Never reinvent the wheel
I hope you have already heard this phrase and can guess what does it mean. So let's try to do it, just do it. Suppose you have a task to add new feature to the project. Write down your steps of actions to complete that task.
Here is mine:
- Think about new feature and image it's workflow
- Googling it, maybe other developers have done and delivered it
- Try to find libraries and play with that (maybe it's suitable for you)
- Make decision (use library? ) and start to code
- Finish task and be happy
Don't repeat yourself
[DRY](https://en.wikipedia.org/wiki/Don't_repeat_yourself) - principle of software development.
There are a thousands of Django project developed around the world by developers. Almost every project has been developed fundamentals in the common way. Create django project, create django application for authentication etc. What do you think maybe there is already exists boilerplate for django proejct?
Try to find it.
How to search
Django Packages - is a directory of reusable apps, sites, tools, and more for your Django projects. If you have found some library before using it try to find it in django-packages and analyze it. (how many starts, commits, tests status etc.) After that you will answer the question "Is this library suitable for my project?".
Cookie-cutter
Recommend boilerplate for creating django project: django-cookiecutter.
>>> if you_have_found_it: # django-cookicutter
>>> good_job = True
>>> else:
>>> good_job = False
Please before creating the project read the documentation. I recommend you always read the documentation cause by this way you can save your time. Don't underestimate it.
cookiecutter-django-rest
Recommend boilerplate for creating django rest framework project: cookiecutter-django-rest
>>> if django_project:
>>> use_cookicutter_django = True
>>> else:
>>> use_cookicutter_django_rest = True