Hướng dẫn gỡ lỗi ứng dụng Django trong VS Code

Ngày đăng: 08/03/2022   -    Cập nhật: 08/03/2022

Hãy cùng xem cách gỡ lỗi Ứng dụng Django trong Visual Studio Code (VS Code) trong hướng dẫn dưới đây.

Mục tiêu

Đến cuối hướng dẫn này, bạn sẽ có thể:

1. Tạo cấu hình chạy Mã VS để đính kèm vào vùng chứa Docker

2. Sửa đổi management.py để khởi động máy chủ gỡ lỗi (Công cụ Python cho Máy chủ gỡ lỗi Visual Studio)

3. Gỡ lỗi một Dự án Django trong VS Code

Tạo Run Configuration

Nếu bạn chưa thiết lập Run Configuration cho dự án của mình, hãy thêm tệp .vscode/launch.json:
 

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Run Django",
      "type": "python",
      "request": "attach",
      "pathMappings": [
        {
          "localRoot": "${workspaceFolder}/app",
          "remoteRoot": "/usr/src/app"
        }
      ],
      "port": 3000,
      "host": "127.0.0.1",
    }
  ]
}


Đảm bảo cập nhật các giá trị localRootremoteRoot mà VS Code sử dụng để ánh xạ các tệp nguồn giữa không gian làm việc của bạn và hệ thống tệp của máy chủ từ xa. Mặc dù các giá trị này sẽ khác nhau dựa trên cách thiết lập dự án của bạn, nhưng nhìn chung, bạn có thể lấy thông tin này từ cấu hình Docker volume.

Ví dụ: giả sử bạn có cấu hình sau trong tệp Docker Compose:

volumes:
  - ./app/:/usr/src/app/

localRoot nên được cài đặt tới đường dẫn local folder,./app/  (ví dụ: "${workspaceFolder}/app") trong khi remoteRoot phải được cài đặt tới thư mục bên trong vùng chứa (ví dụ: "/usr/src/app"). Cần lưu ý rằng thư mục bên trong vùng chứa này cũng có thể là thư mục làm việc của bạn:
 

WORKDIR /usr/src/app

"request": "attach" nhằm kết nối trình gỡ lỗi của VS Code với một quy trình đã chạy. Trong cấu hình trên, chúng ta yêu cầu nó gắn vào cổng 3000 trên 127.0.0.1. Chúng ta sẽ sớm định cấu hình trình gỡ lỗi để chạy trên 127.0.0.1:3000.

Khi hoàn tất, hãy nhấp vào biểu tượng "Run" trong thanh hoạt động ở ngoài cùng bên trái. Bây giờ bạn sẽ thấy cấu hình Run Django  bên cạnh nút play trong thanh bên:

 

 

Sửa đổi management.py

Với VS Code được thiết lập để đính kèm vào debugpy, hãy tích hợp nó vào ứng dụng của chúng tôi.

Để bắt đầu, hãy thêm gói debugpy vào tệp yêu cầu của bạn:

debugpy==1.5.1

Vì debugpy chạy cùng với ứng dụng Django, chúng ta sẽ cần định cấu hình nó để chạy bên trong tệp management.py:

 

from django.conf import settings

if settings.DEBUG:
    if os.environ.get('RUN_MAIN') or os.environ.get('WERKZEUG_RUN_MAIN'):
        import debugpy
        debugpy.listen(("0.0.0.0", 3000))
        print('Attached!')

Tệp của bạn sẽ trông giống như sau:

 

#!/usr/bin/env python
"""Django's command-line utility for administrative tasks."""
import os
import sys


def main():
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'core.settings')

    # start new section
    from django.conf import settings

    if settings.DEBUG:
        if os.environ.get('RUN_MAIN') or os.environ.get('WERKZEUG_RUN_MAIN'):
            import debugpy
            debugpy.listen(("0.0.0.0", 3000))
            print('Attached!')
    # end new section

    try:
        from django.core.management import execute_from_command_line
    except ImportError as exc:
        raise ImportError(
            "Couldn't import Django. Are you sure it's installed and "
            "available on your PYTHONPATH environment variable? Did you "
            "forget to activate a virtual environment?"
        ) from exc
    execute_from_command_line(sys.argv)


if __name__ == '__main__':
    main()

Ở đây, trước tiên chúng ta xác định xem dự án có đang chạy ở chế độ DEBUG hay không. Nếu có, chúng tôi đảm bảo rằng trình gỡ lỗi không được đính kèm nếu đó là bản tải lại của Django (nếu bạn thay đổi một số mã trong khi máy chủ đang chạy).

Phương thức debugpy.listen() khởi động máy chủ gỡ lỗi. Bạn cũng có thể chặn thực thi cho đến khi trình gỡ lỗi được đính kèm với wait_for_client():
 

from django.conf import settings

if settings.DEBUG:
    if os.environ.get('RUN_MAIN') or os.environ.get('WERKZEUG_RUN_MAIN'):
        import debugpy
        debugpy.listen(("0.0.0.0", 3000))
        debugpy.wait_for_client()
        print('Attached!')

Vì debugpy sẽ chạy trên cổng 3000, bạn cần để cổng đó cho máy chủ lưu trữ. Nếu bạn đang sử dụng Docker Compose, bạn có thể hiển thị cổng như sau:

 

version: '3.8'

services:
  web:
    build: ./app
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - ./app/:/usr/src/app/
    ports:
      - 8000:8000
      - 3000:3000

Nếu bạn không sử dụng Compose, hãy đảm bảo để lộ các cổng khi bạn chạy vùng chứa:

$ docker run -d -p 8000:8000 -p 3000:3000 web

Gỡ lỗi ứng dụng Django

Sau khi bạn xây dựng hình ảnh mới để cài đặt debugpy, hãy quay vùng chứa mới.

Đặt một breakpoint ở đâu đó trong mã của bạn. Sau đó, trong VS Code, hãy mở lại chế độ xem "Run" và đảm bảo rằng cấu hình Run Django  mà chúng ta đã tạo trước đó đã được chọn. Nhấp vào nút play để bắt đầu phiên gỡ lỗi.

Bây giờ bạn có thể truy cập breakpoint và bắt đầu gỡ lỗi ứng dụng Django đang chạy bên trong vùng chứa Docker.
 


Kết luận

Trong hướng dẫn này, chúng tôi đã chỉ cho bạn cách định cấu hình VS Code để gỡ lỗi Ứng dụng Django chạy bên trong Docker.

MẸO: Nếu bạn đang sử dụng Python 3.7 trở lên, debugpy cũng hỗ trợ chức năng breakpoint()của Python

 
Bình luận Facebook
Khóa học liên quan đến bài viết

KHÓA HỌC LẬP TRÌNH FRONT END VỚI REACT.JS

56 giờ
Học Lập trình Front end hiện đại với ReactJS. Học làm chủ HTML, CSS, JS và thư viện JavaScript phổ biến nhất hiện nay. Sẵn sàng đi thực tập / đi làm ngay sau khóa học.

Khóa học PHP Full stack [2023] cho người mới bắt đầu

96 giờ
Khóa học Lập trình PHP Full stack, phiên bản cập nhật lần thứ 8. Dạy Lập trình PHP bài bản từ Front end đến Back end + Laravel. Hướng dẫn làm 2 Dự Án Web lớn

FRONT-END VỚI REACTJS VÀ REACT NATIVE

95h (5,5 tháng)
Khóa học duy nhất tại Hà Nội giúp bạn trang bị kiến thức đa nền tảng về Front-end. Với khóa học này, bạn hoàn toàn có thể làm chủ công nghệ phát triển ứng dụng mobile với React Native đồng thời xây dựng được các Trang Web bằng ReactJS...

Khóa học Java Full stack (IJFD)

104 giờ
Học lập trình Java Fullstack với khóa học được xây dựng theo lộ trình bài bản, từ JAVA CƠ BẢN đến JAVA WEB và nâng cao về JAVA FRAMEWORK như: Spring Boot, Hibernate
Mục lục
Đăng ký tư vấn
Nhân viên gọi điện tư vấn miễn phí sau khi đăng ký
Được cập nhật các ưu đãi sớm nhất
Hotline: 0383180086
Tên không được để trống
Số điện thoại không được để trống
Email không được để trống
Hãy đăng ký để nhận những thông tin mới nhất về học bổng mới nhất tại NIIT - ICT Hà Nội
top
Đóng lại Đăng ký học tại NIIT - ICT Hà Nội
6260+ học viên đã theo học tại NIIT - ICT Hà Nội và có việc làm tốt trong ngành lập trình. Nắm lấy cơ hội ngay hôm nay!
Chọn khóa học
  • KHÓA HỌC LẬP TRÌNH FRONT END VỚI REACT.JS
  • KHÓA HỌC LẬP TRÌNH PHP WEB
  • Khóa học PHP Full stack [2023] cho người mới bắt đầu
  • Khóa học BIG DATA với Hadoop và Spark
  • Khóa học Lập trình Android tại Hà Nội
  • [Tuyển sinh 2023] Lập trình viên Quốc tế DigiNxt
  • Khóa học Tiền lương & Phúc lợi (C&B Excel) tại Hà Nội
  • LẬP TRÌNH GAME
    • Khóa học Lập trình Game Unity
  • LẬP TRÌNH WEB FRONT END
    • KHÓA HỌC PYTHON HƯỚNG ĐỐI TƯỢNG
    • KHÓA HỌC ANGULAR & TYPESCRIPT (FRONT END)
  • LẬP TRÌNH WEB BACK END
    • LẬP TRÌNH JAVA WEB VỚI FRAME WORK
    • Lập trình Web với Django
    • Lập trình PHP với Laravel Framework
  • CHƯƠNG TRÌNH ĐÀO TẠO ỨNG DỤNG CÔNG NGHỆ
    • Khóa học Tiền lương & Phúc lợi (C&B Excel) tại TP HCM
  • LẬP TRÌNH WEB FULL STACK
    • Khóa học Java Full stack (IJFD)
  • LẬP TRÌNH MOBILE
    • FRONT-END VỚI REACTJS VÀ REACT NATIVE
    • Lập trình Android Nâng cao
  • ĐÀO TẠO CHO DOANH NGHIỆP
    • KHÓA HỌC BUSINESS ANALYSIC TỪ CƠ BẢN ĐẾN NÂNG CAO 2023
    • Khóa học Magento: Làm chủ CMS TMĐT lớn nhất
    • Khóa học IOT: Xây dựng Sản phẩm IOT với Raspberry Pi
    • Khóa học Automation Testing Chuyên nghiệp
  • KHÓA HỌC DỰ ÁN
    • Học sử dụng bộ Office: Word, Excel, Power Point, Mail chuyên nghiệp
  • KHÓA HỌC KHÁC
    • VBA Excel Toàn Tập (Cơ Bản - Nâng Cao)
    • VBA Excel Nâng cao
    • Khóa học JMeter: Performance Testing
    • Khóa học Tester đạt chuẩn Quốc tế ISTQB Foundation Level
    • Khoá Học Tester đạt chuẩn quốc tế ISTQB Advanced Level
Bạn chưa chọn khóa học cần đăng ký
Tên không được để trống
Số điện thoại không được để trống
Email không được để trống
Đăng ký học thành công!
Cảm ơn bạn đã đăng ký học tại NIIT - ICT HÀ NỘI!