Adam Johnson vừa ra mắt django-launch-editor 1.0.0 (8/11/2026): package nhỏ biến vị trí file trên trang lỗi debug của Django thành đường link — bấm vào là mở thẳng file đó trong editor, đúng dòng, đúng cột gây lỗi.
Trang lỗi debug của Django vốn đã hữu ích với traceback đầy đủ và đoạn code quanh từng frame. Nhưng còn một bước thừa quen thuộc: nhìn tên file và số dòng, chuyển sang editor, gõ lại đường dẫn rồi nhảy tới dòng đó — lặp lại hàng chục lần mỗi ngày với lỗi nằm sâu trong nhiều lớp view, form, template. django-launch-editor sinh ra để xóa đúng bước thừa đó.
Cài đặt chỉ mất 3 bước
Đầu tiên, cài package bằng pip:
python -m pip install django-launch-editor
Tiếp theo, trong file settings, trỏ Django sang reporter của package:
DEFAULT_EXCEPTION_REPORTER = "django_launch_editor.LaunchEditorExceptionReporter"
Cuối cùng, thêm URL của package vào urlpatterns theo README. Từ lúc này, mỗi khi DEBUG = True và có lỗi, các vị trí file trong traceback hiện dưới dạng link có gạch chân — cả với lỗi template.
Nó hoạt động như thế nào?
Package mở rộng ExceptionReporter của Django: chèn script nhỏ vào trang debug HTML và tạo token ký bằng SECRET_KEY cho từng frame traceback. Bấm vào một vị trí file, trình duyệt gửi token về một view của package; view kiểm tra token rồi gọi launch_editor() để mở editor đúng file, đúng dòng, đúng cột.
Việc nhận diện editor do launch-editor-py đảm nhiệm — bản port Python của gói launch-editor bên JavaScript, thứ vận hành tính năng tương tự của Vite. Nó quét danh sách tiến trình để biết bạn đang chạy editor nào, rồi dùng đúng cú pháp của editor đó, ví dụ VS Code nhận code --goto file:line:column.
An toàn và giới hạn cần biết
Vì tính năng này chạy chương trình trên máy chủ, tác giả đặt nhiều lớp phòng vệ. Thứ nhất, mọi thứ chỉ hoạt động khi DEBUG = True; khi DEBUG = False, reporter không thêm gì vào trang lỗi và URL cũng không được đăng ký. Thứ hai, view mở file không nhận đường dẫn tùy ý: mỗi link mang token ký bằng SECRET_KEY, chỉ cấp cho file xuất hiện trên trang debug và hết hạn sau 24 giờ.
Thứ ba, package chỉ mở được editor khi Django chạy trên cùng máy với editor. Chạy server dev trong Docker hay trên máy remote thì bấm vào vị trí file sẽ hiện hộp thoại “Running editor not detected” và tự copy vị trí dạng path:line vào clipboard. Package hỗ trợ Django 5.2 đến 6.1.
Từ đâu mà có?
Ý tưởng bắt nguồn từ profiling-explorer, công cụ xem profiling trên trình duyệt của Adam Johnson. Anh port gói launch-editor của JavaScript sang Python thành launch-editor-py — Claude dịch code, anh review, viết test và làm API theo phong cách Python. Tác giả hy vọng tích hợp nó vào Django Debug Toolbar, xa hơn là vào chính Django.
Điều này có ý nghĩa gì với bạn
Mỗi lần debug chỉ tiết kiệm vài giây, nhưng cộng dồn hàng chục lần bấm mỗi ngày thì đó là một khoản thời gian thật. Quan trọng hơn, nó giữ mạch suy nghĩ không bị đứt: thấy lỗi là tới ngay dòng code, thay vì chuyển sang editor rồi mò lại vị trí. Chạy runserver ngay trên máy mình thì đây là nâng cấp “cài xong quên luôn”. Làm việc trong Docker thì lợi ích nhỏ hơn — chỉ còn nút copy vị trí — nhưng vẫn đáng thử vì cài đặt nhanh và gỡ bỏ dễ.
Bài viết liên quan
- Django: bắt query chậm và dư thừa bằng django-debug-toolbar trong 5 phút
- Django: sửa lỗi N+1 query bằng select_related trong 5 phút
Câu hỏi thường gặp
django-launch-editor có chạy trên production không?
Không. Mọi chức năng chỉ kích hoạt khi DEBUG = True; khi DEBUG = False, URL mở file cũng không được đăng ký.
Editor nào được hỗ trợ?
launch-editor-py nhận diện nhiều editor phổ biến như VS Code, PyCharm, Vim, Sublime Text — kiểm tra bằng lệnh python -m launch_editor --guess.
💬 Tin này ảnh hưởng tới dự án của bạn thế nào? Chia sẻ góc nhìn của bạn trong phần bình luận — mình đọc hết và sẽ tổng hợp những ý hay nhất.
Nguồn tham khảo
- Adam Johnson, “Django: introducing django-launch-editor for jump-to-file debugging”, adamj.eu, 8/11/2026 — https://adamj.eu/tech/2026/11/08/introducing-django-launch-editor/
- django-launch-editor 1.0.0 trên PyPI — https://pypi.org/project/django-launch-editor/1.0.0/
