Đơn giản chỉ cần đọc nguồn có thể là một chút áp đảo, đặc biệt là vì phần trên hầu hết là một chút khó hiểu (làm thế nào máy chủ web đưa ra yêu cầu mã Django). Tôi tìm một cách hay để bắt đầu đọc mã là đặt điểm ngắt trình gỡ lỗi trong chức năng chế độ xem của bạn:
def time(request):
import pdb; pdb.set_trace()
return HttpResponse(blah blah)
rồi nhấn URL của bạn. Khi trình gỡ lỗi ngắt tại điểm ngắt của bạn, hãy kiểm tra ngăn xếp:
(Pdb) where
c:\abcxyzproject\django\core\management\commands\runserver.py(60)inner_run()
-> run(addr, int(port), handler)
c:\abcxyzproject\django\core\servers\basehttp.py(698)run()
-> httpd.serve_forever()
c:\python25\lib\socketserver.py(201)serve_forever()
-> self.handle_request()
c:\python25\lib\socketserver.py(222)handle_request()
-> self.process_request(request, client_address)
c:\python25\lib\socketserver.py(241)process_request()
-> self.finish_request(request, client_address)
c:\python25\lib\socketserver.py(254)finish_request()
-> self.RequestHandlerClass(request, client_address, self)
c:\abcxyzproject\django\core\servers\basehttp.py(560)__init__()
-> BaseHTTPRequestHandler.__init__(self, *args, **kwargs)
c:\python25\lib\socketserver.py(522)__init__()
-> self.handle()
c:\abcxyzproject\django\core\servers\basehttp.py(605)handle()
-> handler.run(self.server.get_app())
c:\abcxyzproject\django\core\servers\basehttp.py(279)run()
-> self.result = application(self.environ, self.start_response)
c:\abcxyzproject\django\core\servers\basehttp.py(651)__call__()
-> return self.application(environ, start_response)
c:\abcxyzproject\django\core\handlers\wsgi.py(241)__call__()
-> response = self.get_response(request)
c:\abcxyzproject\django\core\handlers\base.py(92)get_response()
-> response = callback(request, *callback_args, **callback_kwargs)
> c:\abcxyzproject\abcxyz\helpers\views.py(118)time()
-> return HttpResponse(
(Pdb)
Bây giờ bạn có thể xem tóm tắt đường dẫn từ phần sâu nhất của máy chủ web đến chức năng xem của bạn. Sử dụng lệnh "up" để di chuyển lên ngăn xếp và lệnh "danh sách" và "in" để kiểm tra mã và các biến ở các khung ngăn xếp đó.
Nguồn
2009-08-17 12:37:37
Khi bạn nhìn vào nguồn, bạn đã thấy gì? –