Creating custom user model API extending AbstractUser in Django
Every new Django project should use a custom user model. The official Django documentation says it is “highly recommended” but I’ll go a step further and say without hesitation: You are straight up crazy not to use a custom user model up front.
Why do u need a custom user model in Django?
When you start your project with a custom user model, stop to consider if this is the right choice for your project. Keeping all user related information in one model removes the need for additional or more complex database queries to retrieve related models. On the other hand, it may be more suitable to store app-specific user information in a model that has a relation with your custom user model. That allows each app to specify its own user data requirements without potentially conflicting or breaking assumptions by other apps. It also means that you would keep your user model as simple as possible, focused on authentication, and following the minimum requirements Django expects custom user models to meet.
So i think its clear why we need a custom user model in django, here in this article we are going to learn how to create custom user model and its api in django now, lets begin with the coding part .
Create and navigate into a dedicated directory called users for our code
make a new Django project called login
make a new app users
start the local web server
$ cd ~/Desktop
$ mkdir code && cd code $ pipenv install django $ pipenv shell $ django-admin startproject login $ python manage.py startapp api $ pipenv install rest_framework
Now, add following code in settings.py,
After this we need to create a custom user model. For this change your models.py file as following. Here we are extending AbstractUser and changing authentication credentials to Email. And we are also adding some extra fields in our custom user
After this we need to save these changes to the admin panel as well. Add this code to the admin.py
Now create a serializers.py file in your app. Add following code to your serializers. py
Now create api/urls.py file inside you app and add following lines
Now add following code to the login/urls.py of your project
We are all set with the custom user model. Now save these changes to you project and makemigrations through CLI
$ python manage.py makemigrations users $ python manage.py migrate
Now create a superuser
$ python manage.py createsuperuser Email address: email@example.com Password: Password (again): Superuser created successfully.
Now run server with.
$ python manage.py runserver
And go through the URL. You can check your custom user in the admin panel