Notice
Recent Posts
Recent Comments
관리 메뉴

안까먹을라고 쓰는 블로그

[Python_Django_VSCode] Django Tutorials - 8 (디버거 탐색) 본문

Language/Python(Django)

[Python_Django_VSCode] Django Tutorials - 8 (디버거 탐색)

YawnsDuzin 2022. 1. 19. 11:14

 

반응형


https://code.visualstudio.com/docs/python/tutorial-django

 

Python and Django tutorial in Visual Studio Code

Python Django tutorial demonstrating IntelliSense, code navigation, and debugging for both code and templates in Visual Studio Code, the best Python IDE.

code.visualstudio.com


디버거 탐색

디버깅은 특정 코드 줄에서 실행 중인 프로그램을 일시 중지할 수 있는 기회를 제공합니다. 프로그램이 일시 중지되면 변수를 검사하고 디버그 콘솔 패널에서 코드를 실행하거나 디버깅 에 설명된 기능을 활용할 수 있습니다. 디버거를 실행하면 디버깅 세션이 시작되기 전에 수정된 파일도 자동으로 저장됩니다.

 

시작하기 전에: 터미널에서 Ctrl+C 를 사용하여 마지막 섹션의 끝에서 실행 중인 앱을 중지했는지 확인합니다. 하나의 터미널에서 앱을 실행 중인 상태로 두면 포트를 계속 소유하게 됩니다. 결과적으로 동일한 포트를 사용하여 디버거에서 앱을 실행하면 원래 실행 중인 앱이 모든 요청을 처리하고 디버그 중인 앱의 활동을 볼 수 없으며 프로그램이 중단점에서 중지되지 않습니다. 즉, 디버거가 작동하지 않는 것 같으면 앱의 다른 인스턴스가 아직 실행되고 있지 않은지 확인합니다.

1. hello/urls.py 에서 urlpatterns 목록에 경로를 추가합니다.

path("hello/<name>", views.hello_there, name="hello_there"),

path 에 대한 첫 번째 인수는 name이라는 변수 문자열을 허용하는 "hello/" 경로를 정의합니다. 문자열은 path에 대한 두 번째 인수에 지정된 views.hello_there 함수에 전달됩니다.

 

URL 경로는 대소문자를 구분합니다. 예를 들어 /hello/<name> 경로는 /Hello/<name> 과 다릅니다. 동일한 보기 기능이 둘 다를 처리하도록 하려면 각 변형에 대한 경로를 정의하십시오.



2. hello/views.py의 내용을 다음 코드로 교체하여 디버거에서 단계별로 수행할 수 있는 hello_there 함수를 정의합니다.

import re
from django.utils.timezone import datetime

from django.http import HttpResponse

def home(request):
    return HttpResponse("Hello, Django!")

def hello_there(request, name):
    now = datetime.now()
    formatted_now = now.strftime("%A, %d %B, %Y at %X")
    
    match_object = re.match("[a-zA-Z]+", name)
    
    if match_object:
        clean_name = match_object.group(0)
    else:
        clean_name = "Friend"
        
    content = "Hello there, " + clean_name + "! It's " + formatted_now
    
    return HttpResponse(content)

URL 경로에 정의된 name 변수는 hello_there 함수에 대한 인수로 제공됩니다. 코드 주석에 설명된 대로 앱에 대한 다양한 공격을 피하기 위해 항상 임의의 사용자 제공 정보를 필터링하십시오. 이 경우 코드는 제어 문자, HTML 등의 삽입을 방지하는 문자만 포함하도록 name 인수를 필터링합니다. (다음 섹션에서 템플릿을 사용할 때 Django는 자동 필터링을 수행하므로 이 코드가 필요하지 않습니다.)

 


3. 다음 중 하나를 수행 하여 hello_there 함수( ) 의 첫 번째 코드 줄 ( now = datetime.now() ) 에 중단점을 설정합니다 .

  • 줄 번호 왼쪽의 여백을 직접 클릭합니다(마우스를 가져가면 흐릿한 빨간색 점이 나타남).
  • 해당 행에 커서를 두고 F9 키 를 누르 거나
  • ,해당 행에 커서를 두고 실행 > 중단점 전환 메뉴 명령을 선택하거나,

중단점은 왼쪽 여백에 빨간색 점으로 나타납니다.


4. 실행 > 디버깅 시작 메뉴 명령을 선택하거나 목록 옆에 있는 녹색 디버깅 시작 화살표( F5 ) 를 선택하여
   디버거를 시작합니다

디버깅을 나타내기 위해 상태 표시줄의 색상이 변경되는 것을 확인할 수 있습니다.


디버깅 도구 모음(아래 표시)은
  일시 중지(또는 계속 (F5 )
  한 단계씩 건너뛰기(F10)
  한 단계씩 실행(F11)
  한 단계씩 나가기(Shift+F11)
  다시 시작(Ctrl+Shift+F5)
  중지(Shift+F5)
각 명령에 대한 설명은 VS Code 디버깅 을 참조하세요 .


5. 출력은 "Python Debug Console" 터미널에 나타납니다. 브라우저를 열고 http://127.0.0.1:8000/hello/VSCode 로 이동합니다. 페이지가 렌더링되기 전에 VS Code는 사용자가 설정한 중단점에서 프로그램을 일시 중지합니다. 중단점의 작은 노란색 화살표는 실행할 코드의 다음 줄임을 나타냅니다.


6. F10(Step Over)을 사용하여 now = datetime.now() 명령문을 실행합니다.

7. VS Code 창의 왼쪽에는 now 와 같은 로컬 변수와 name 과 같은 인수가 표시되는 변수 창이 표시됩니다. 그 아래에는 감시, 호출 스택 및 중단점에 대한 창이 있습니다(자세한 내용은 VS Code debugging  참조). 지역 섹션에서 다른 값을 확장해 보십시오. 값을 두 번 클릭하거나 F2 키를 사용하여 수정할 수도 있습니다. 그러나 now 같이 변수를 변경하면 프로그램이 중단될 수 있습니다. 개발자는 일반적으로 코드가 처음부터 올바른 값을 생성하지 않았을 때 올바른 값만 변경합니다.


8. 프로그램이 일시 중지되면 디버그 콘솔 패널(터미널 패널의 "Python 디버그 콘솔"과 다름)을 통해 표현식을 실험하고 프로그램의 현재 상태를 사용하여 코드 비트를 시험해 볼 수 있습니다. 예를 들어 now = datetime.now() 줄을 넘었다면 다른 날짜/시간 형식으로 실험할 수 있습니다. 편집기에서 now.strftime("%A, %d %B, %Y at %X") 이라는 코드를 선택한 다음 마우스 오른쪽 버튼을 클릭하고 Evaluate in Debug Console (디버그: 평가)를 선택하여 해당 코드를 디버그 콘솔로 보내어 결과 값을 확인할 수 있습니다.


디버그 콘솔에 직접 입력하여 확인할 수도 있습니다. 입력 후, 엔터

TIP.
디버그 콘솔 에는 터미널에 표시되지 않을 수 있는 앱 내 예외도 표시됩니다. 예를 들어 실행 보기의 호출 스택
 영역에 "Paused on exception" ("예외 시 일시 중지됨") 메시지가 표시되면 디버그 콘솔 로 전환하여 예외 메시지를 확인하십시오.

 


9. 디버그 콘솔 맨 아래에 있는 > 프롬프트에 해당 줄을 복사하고 형식을 변경해 보십시오.

now.strftime("%a, %d %B, %Y at %X")
'Fri, 07 September, 2018 at 07:46:32'
now.strftime("%a, %d %b, %Y at %X")
'Fri, 07 Sep, 2018 at 07:46:32'
now.strftime("%a, %d %b, %y at %X")
'Fri, 07 Sep, 18 at 07:46:32'

NOTE.
마음에 드는 변경 사항이 있으면 디버깅 세션 중에 복사하여 편집기에 붙여넣을 수 있습니다. 
그러나 이러한 변경 사항은 디버거를 다시 시작할 때까지 적용되지 않습니다.

10. F5 (계속)을 선택하여 프로그램을 실행합니다. 브라우저 창에 결과가 표시됩니다.

 


11. 완료되면 브라우저를 닫고 디버거를 중지합니다. 
    디버거를 중지하려면 중지 도구 모음 단추(빨간색 사각형) 또는 실행 > 디버깅 중지 명령( Shift+F5 )을 사용하십시오.

TIP.
http://127.0.0.1:8000/hello/VSCode와 같은 특정 URL을 반복적으로 쉽게 탐색할 수 있도록 하려면,
views.py와 같은 파일의 어딘가에 print 명령어를 사용하여 해당 URL을 출력합니다.
URL은 Ctrl+Click 을 사용하여 브라우저에서 열 수 있는 VS Code 터미널에 나타납니다.


끝~

반응형
Comments