[Một gói mỗi ngày] Django Extensions
By hientd, at: 12:00 Ngày 23 tháng 11 năm 2023
Thời gian đọc ước tính: __READING_TIME__ minutes
![[One Package Per Day] - Django Extensions](/media/filer_public_thumbnails/filer_public/53/dd/53dd46c6-2241-4fcd-b053-c8ca9ee0ea92/django_extensions.png__1500x900_crop_subsampling-2_upscale.png)
![[One Package Per Day] - Django Extensions](/media/filer_public_thumbnails/filer_public/53/dd/53dd46c6-2241-4fcd-b053-c8ca9ee0ea92/django_extensions.png__400x240_crop_subsampling-2_upscale.png)
Một Gói Mỗi Ngày: Django Extensions
Chào mừng bạn trở lại với chuỗi bài viết "Một Gói Mỗi Ngày" của chúng tôi, nơi chúng ta khám phá các gói tiện ích có thể nâng cao các dự án Django của bạn. Hôm nay, chúng ta sẽ tìm hiểu về Django Extensions—một tập hợp các tiện ích mở rộng tùy chỉnh cho framework Django có thể làm tăng đáng kể năng suất và đơn giản hóa quá trình phát triển của bạn.
Cài đặt
Để cài đặt Django Extensions, chỉ cần sử dụng pip:
pip install django-extensions
Sau khi cài đặt, thêm 'django_extensions'
vào INSTALLED_APPS
trong cài đặt Django của bạn:
INSTALLED_APPS = [
# Các ứng dụng đã cài đặt khác
'django_extensions',
]
Bắt đầu
Sau khi cài đặt, bạn có thể bắt đầu sử dụng các lệnh và công cụ khác nhau được cung cấp bởi Django Extensions. Dưới đây là một số ví dụ nhanh để bạn bắt đầu:
- shell_plus: Một shell nâng cao với tính năng tự động nhập.
python manage.py shell_plus
- runserver_plus: Server phát triển được cải thiện với khả năng xử lý lỗi tốt hơn.
python manage.py runserver_plus
- graph_models: Tạo hình ảnh trực quan về các mô hình của bạn.
python manage.py graph_models -a -o my_project_database_schema.png
Các tính năng chính
Dưới đây là một số tính năng nổi bật của Django Extensions:
-
Lệnh Quản lý
- shell_plus: Tự động nhập tất cả các mô hình và cài đặt của bạn. => tại Glinteco, chúng tôi thường xuyên sử dụng điều này trong quá trình gỡ lỗi
- runserver_plus: Cung cấp các tính năng bổ sung như xử lý lỗi và trình gỡ lỗi Werkzeug.
- generate_secret_key: Tạo khóa bí mật mới cho dự án Django của bạn.
- shell_plus: Tự động nhập tất cả các mô hình và cài đặt của bạn. => tại Glinteco, chúng tôi thường xuyên sử dụng điều này trong quá trình gỡ lỗi
-
Công cụ cơ sở dữ liệu
- sqldiff: So sánh lược đồ cơ sở dữ liệu của bạn với các mô hình của bạn.
- reset_db: Đặt lại cơ sở dữ liệu của bạn, hữu ích trong quá trình phát triển và kiểm thử.
- sqldiff: So sánh lược đồ cơ sở dữ liệu của bạn với các mô hình của bạn.
-
Nâng cao mô hình
- AutoSlugField: Tạo slug duy nhất cho trường mô hình.
- TimeStampedModel: Cung cấp các trường "created" và "modified" tự cập nhật.
- AutoSlugField: Tạo slug duy nhất cho trường mô hình.
-
Mô hình đồ thị
- graph_models: Tạo hình ảnh trực quan về lược đồ mô hình của bạn.
- graph_models: Tạo hình ảnh trực quan về lược đồ mô hình của bạn.
-
Framework công việc
- Jobs: Lên lịch và chạy các tác vụ ở các khoảng thời gian cụ thể, tương tự như các công việc cron.
- Jobs: Lên lịch và chạy các tác vụ ở các khoảng thời gian cụ thể, tương tự như các công việc cron.
-
Mở rộng trường
- UUIDField: Trường cho các định danh duy nhất toàn cầu.
- EncryptedCharField và EncryptedTextField: Các trường cung cấp mã hóa cho dữ liệu nhạy cảm.
- UUIDField: Trường cho các định danh duy nhất toàn cầu.
-
Nâng cao quản trị
- ForeignKeyAutocompleteAdmin: Tính năng nâng cao giao diện quản trị thêm tự động hoàn thành cho các trường khóa ngoại.
- Export Action ModelAdmin: Thêm hành động để xuất dữ liệu từ quản trị Django.
- ForeignKeyAutocompleteAdmin: Tính năng nâng cao giao diện quản trị thêm tự động hoàn thành cho các trường khóa ngoại.
-
Công cụ dành cho nhà phát triển
- print_settings: In các cài đặt Django hiện tại ở định dạng dễ đọc.
- show_urls: Hiển thị tất cả các URL trong dự án Django của bạn cùng với các hàm view tương ứng.
- print_settings: In các cài đặt Django hiện tại ở định dạng dễ đọc.
-
Tiện ích kiểm thử
- TestCase với chức năng nâng cao: Cung cấp các khẳng định và tiện ích bổ sung để kiểm thử các ứng dụng Django.
- test_wipe_database: Lệnh quản lý để xóa cơ sở dữ liệu trước khi chạy các bài kiểm thử.
- TestCase với chức năng nâng cao: Cung cấp các khẳng định và tiện ích bổ sung để kiểm thử các ứng dụng Django.
-
Lệnh thông tin hệ thống
- show_template_tags: Liệt kê tất cả các thẻ template có sẵn trong dự án.
- show_template_filters: Liệt kê tất cả các bộ lọc template có sẵn trong dự án.
- show_urls: Liệt kê tất cả các URL trong dự án. => tại Glinteco, chúng tôi thường xuyên sử dụng điều này trong quá trình điều tra urls
- show_template_tags: Liệt kê tất cả các thẻ template có sẵn trong dự án.
-
Quản lý dữ liệu
- dumpdata và loaddata được nâng cao: Các phiên bản được cải tiến của các lệnh tích hợp sẵn của Django để dump và load dữ liệu, với các tùy chọn và tính năng bổ sung.
- dumpdata và loaddata được nâng cao: Các phiên bản được cải tiến của các lệnh tích hợp sẵn của Django để dump và load dữ liệu, với các tùy chọn và tính năng bổ sung.
Ưu điểm và nhược điểm
Ưu điểm
- Nâng cao năng suất với các lệnh quản lý nâng cao.
- Cung cấp các công cụ hữu ích để quản lý cơ sở dữ liệu và mô hình.
- Cải thiện việc gỡ lỗi và xử lý lỗi.
Nhược điểm
- Một số tính năng có thể trùng lặp với các công cụ hoặc gói khác.
- Có thể làm tăng độ phức tạp của dự án nếu không được sử dụng một cách khôn ngoan. => Chúng ta chỉ nên sử dụng điều này cho môi trường PHÁT TRIỂN.
Trường hợp sử dụng
- Phát triển: Tương tác nhanh chóng với dự án của bạn bằng
shell_plus
vàrunserver_plus
.
- Quản lý cơ sở dữ liệu: Sử dụng
sqldiff
vàreset_db
để quản lý và khắc phục sự cố lược đồ cơ sở dữ liệu của bạn.
- Lên lịch tác vụ: Thực hiện các tác vụ được lên lịch bằng framework Jobs.
Thực tiễn tốt nhất
- Thường xuyên sử dụng
sqldiff
để giữ cho các mô hình và lược đồ cơ sở dữ liệu của bạn được đồng bộ.
- Sử dụng
runserver_plus
trong quá trình phát triển để xử lý lỗi tốt hơn.
- Tạo và xem xét các biểu đồ mô hình để hiểu và ghi chép cấu trúc cơ sở dữ liệu của bạn.
Tùy chỉnh
Gói này cung cấp nhiều tùy chọn cấu hình để tùy chỉnh hành vi của nó.
Ví dụ: bạn có thể cấu hình shell_plus
để sử dụng các shell khác nhau như IPython hoặc BPython bằng cách thêm những điều sau vào cài đặt của bạn:
SHELL_PLUS = "ipython"
Tích hợp
Django Extensions tích hợp liền mạch với các dự án Django hiện có. Bạn có thể sử dụng nó cùng với các gói Django phổ biến khác như Django Rest Framework hoặc Celery mà không có xung đột nào.
Những cân nhắc về hiệu suất
Mặc dù Django Extensions cung cấp nhiều công cụ mạnh mẽ, nhưng một số lệnh, chẳng hạn như graph_models
, có thể tiêu tốn nhiều tài nguyên. Nên sử dụng các lệnh này vào những thời điểm không cao điểm hoặc trong môi trường phát triển.
So sánh với các gói tương tự
Django Extensions so với Django Debug Toolbar:
- Django Debug Toolbar tập trung vào việc gỡ lỗi và phân tích hiệu suất thời gian thực, trong khi Django Extensions cung cấp nhiều công cụ phát triển hơn.
Django Extensions so với Lệnh quản lý Django:
- Mặc dù Django bao gồm một số lệnh quản lý tích hợp sẵn, nhưng Django Extensions đã mở rộng đáng kể các lệnh và công cụ có sẵn.
Các gói hữu ích khác từ cộng đồng Django
- Django Rest Framework: Để xây dựng API.
- Celery: Để xử lý tác vụ nền.
- Django Allauth: Để xác thực, đăng ký và quản lý tài khoản.
Cộng đồng và Tài liệu
Django Extensions có một cộng đồng mạnh mẽ và tài liệu toàn diện có sẵn tại Tài liệu Django Extensions. Cộng đồng rất năng động trên GitHub và các diễn đàn khác, giúp bạn dễ dàng tìm kiếm hỗ trợ và đóng góp vào dự án.
Kết luận
Django Extensions là một gói mạnh mẽ có thể nâng cao đáng kể quy trình làm việc phát triển Django của bạn. Từ các lệnh shell được cải thiện đến các công cụ cơ sở dữ liệu nâng cao, nó cung cấp một bộ tính năng toàn diện có thể giúp bạn tiết kiệm thời gian và công sức. Hãy thử nó trong dự án tiếp theo của bạn và tự mình trải nghiệm sự gia tăng năng suất.
Hãy tiếp tục theo dõi chuỗi bài viết "Một Gói Mỗi Ngày" của chúng tôi sau này...