DRF Registration là một package mình viết vào một ngày không đẹp trời lắm giữa lúc Đà Nẵng trở thành ổ dịch Covid lớn nhất cả nước. Đây là một package sử dụng Django Rest Framework để tạo ra những registration APIs một cách đơn giản và nhanh nhất. Và hôm nay “nhân dịp” Covid trở lại Việt Nam thì mình viết giới thiệu những chức năng của package này.
Trên cộng đồng cũng có một số package làm về chủ đề này. Hoặc là quá nhiều chức năng, hoặc là quá khó để sử dụng, hoặc là quá sơ sài. Với nhu cầu cá nhân thì mình phát triển DRF Registration. Package này vẫn còn nhiều thứ để cải thiện, nếu được các bạn có thể góp ý, yêu cầu thêm chức năng hoặc đóng góp trên GitHub.
Thông tin
- Document: https://drf-registration.readthedocs.io/en/latest/
- Pip: https://pypi.org/project/drf-registration/
- GitHub: https://github.com/huychau/drf-registration
- Example: https://github.com/huychau/drf-registration/tree/master/examples/testapp
Chức năng
Dưới đây là một số APIs, chức năng của package này.
- Register
- Activate account bằng token gởi tới email
- Login
- Logout
- User Profile
- Change Password
- Reset Password
- Social Login (Facebook, Google)
- Set password khi sử dụng social login
- Đồng bộ account thường với socials
- Dễ dàng custom email configs, templates
- Configs đơn giản, dễ dàng
- Có thể dùng những classes, functions của package như những utils/helpers
- Và nhiều chức năng khác
Cài đặt
Yêu cầu
- Python (>=3.6)
- Django (>=2)
- Django Rest Framework (>=3.8.2)
Installation
pip install drf_registration
Settings
INSTALLED_APPS
Package này sử dung Django Rest Framework
và AuthToken
nên bạn phải chắc chắn đã thêm vào trong INSTALLED_APPS
INSTALLED_APPS = [
...
'rest_framework',
'rest_framework.authtoken',
'drf_registration',
...
]
AUTH_USER_MODEL
Yêu cầu bạn phải có User model trước, có thể sử dụng mặc định của Django.
AUTH_USER_MODEL = 'accounts.User' # Bạn có thể thay đổi User mode khác
urls.py
urlpatterns = [
...
path('/api/accounts/', include('drf_registration.urls')),
...
]
AUTHENTICATION_BACKEND
Hỗ trợ multiple username fields khi login.
AUTHENTICATION_BACKENDS = [
'drf_registration.auth.MultiFieldsModelBackend',
]
DEFAULT_AUTHENTICATION_CLASSES
Sử dụng TokenAuthentication
.
REST_FRAMEWORK = {
...
'DEFAULT_AUTHENTICATION_CLASSES': [
'rest_framework.authentication.TokenAuthentication',
],
...
}
DRF Registration Settings
Hiện tại package này hỗ trợ custom nhiều giá trị default:
- User
- Register
- Login
- Profile
- Change Password
- Reset Password
- Set Password
- Social Login
Bạn có thể tìm hiểu thêm tại đây
Chạy thử nào
Sau các bước cài đặt cơ bản của DRF Registration thì bắt đầu chạy thử để xem kết quả.
python manage.py runserver
Mình dùng Swagger cho API document, sau khi access vào http://localhost:8000/docs/ bạn có thể kiểm tra tất cả API của DRF Registration. Dưới đây là một số ví dụ.
Bạn có thể xem full APIs tại đây: https://drf-registration.readthedocs.io/en/latest/apis.html
Nếu có bất kỳ thắc mắc vui lòng để lại bình luận hoặc tạo GitHub issues nha!
Happy coding.