django-emailuser 1.1.2
emailuser, make email as username, But unique username also exists.
License: MIT
Keywords: django,django emailuser,django email user,django email username,django email as username

# # `emailuser` is a Django Custom User Module

#Package Version: 1.x
`emailuser` makes it easy to use email address as your identification token instead of a username.
emailuser is a custom Django user model (extends  `AbstractBaseUser`) so it takes a tiny amount of effort to use.

The only difference between emailuser and the vanilla Django  `User`  is email address is the  `USERNAME_FIELD`  (and username also exist, If you not give it in `create_user` it will generate a `random 12 char unique string as username`).

emailuser supports Django 2.* to 3.*
# When to use emailuser ?

When you need email as username in django project.

# Why I have created emailuser?

I have created this custom user package for my university final project where I need to create user using university email also all user must have a profile link using unique username.

I think this package can help me in other application development also it can help other people too. That is why I published it.
If you love it you can [donate](https://commerce.coinbase.com/checkout/c3eafb3c-65ba-40b5-b555-2037989de629).

# Install and setup

 1. Install with `pip`:
  ```
    #Django 2.x, or 3.x

    pip install django-emailuser 
  ```
 2. Add `emailuser` to your `INSTALLED_APPS` setting:
 
  ```  
    
    INSTALLED_APPS = [
        ...
        'emailuser',
    ]
    
  ```
 3. Specify the custom model as the default user model for your project using the `AUTH_USER_MODEL` setting in your setting:
 
  ```
    AUTH_USER_MODEL = "emailuser.User"
  ```
 5. Run migrations (Don't do any migrate before `emailuser` makemigrations).
 
   if you have tables referencing Django  `User`  model, you will have to delete those table and migrations, then re-migrate. This will ensure everything is set up correctly from the beginning.
  
   ```
    python manage.py makemigrations emailuser
    python manage.py migrate
  ```

 6. Instead of referring to User directly, you should reference the user model using  `django.contrib.auth.get_user_model()`

  When you define a foreign key or many-to-many relations to the  `User`  model, you should specify the custom model using the  `AUTH_USER_MODEL`  setting.

  ```
  from django.conf import settings
  from django.db import models

  class Profile(models.Model):
      user = models.ForeignKey(
          settings.AUTH_USER_MODEL,
          on_delete=models.CASCADE,
  )
  ```
7: For Django Rest Framework

    from django.contrib.auth import get_user_model
    class  UserSerializer(serializers.ModelSerializer):
      class  Meta:
        model = get_user_model()
        fields = ('id', 'email', 'username', 'first_name', 'last_name')

 8: Helper Functions
  

    from django.contrib.auth import get_user_model
    
    get_user_model().objects.get_full_name()  # Return Full Name
    
    /*
    For sending email you must configure smtp setting like below
      EMAIL_HOST = 'hostname'
    EMAIL_PORT = port
    EMAIL_HOST_USER = 'username'
    EMAIL_HOST_PASSWORD = 'password'
    EMAIL_USE_TLS = True
  */
  
    get_user_model().objects.send_email(subject, message, from_email)   
  
  # this will send email to logged in user
  # by default it will not show sending error 
  # for showing error extra False argument required like below
  
  get_user_model().objects.send_email(subject, message, from_email, False)  

9: Registraion

    get_user_model().objects.create_user(email, password, first_name, last_name, username)
    #username field is optional. If it's empty a rendom unique username will be created
    
10: Login

    #Required argument
    email and password

Note. FOO@example.com will be replaced to foo@example.com automatically

 
## License

Released under the MIT license. See [LICENSE](https://github.com/Swe-HimelRana/django-email-user/blob/master/LICENSE) for details.

## [](https://github.com/Swe-HimelRana/django-email-user#questions-comments-or-anything-else)Questions, comments, or anything else?
-   [Contribute](https://github.com/Swe-HimelRana/django-email-user/)
-   [Open an issue](https://github.com/Swe-HimelRana/django-email-user/issues)
-   [https://www.linkedin.com/in/swe-himelrana](https://www.linkedin.com/in/swe-himelrana)
-   [contact@himelrana-swe.com](mailto:contact@himelrana-swe.com)
 
 Give a thanks by [Donation](https://commerce.coinbase.com/checkout/c3eafb3c-65ba-40b5-b555-2037989de629)