0
0
Lập trình
TT

Cách Web Giao Tiếp Với Django: Hướng Dẫn Dễ Hiểu

Đăng vào 7 tháng trước

• 9 phút đọc

Giới Thiệu

Django là một framework web nổi bật. Nghe có vẻ phức tạp đúng không? Nhưng thực tế, khi bạn lần đầu nghe thấy cụm từ đó, có thể bạn sẽ cảm thấy không hiểu rõ ý nghĩa của nó. Framework là gì? Và tại sao Django lại dành cho web?

Trước khi bạn có thể đánh giá những gì Django mang lại, bạn cần hiểu điều gì thực sự xảy ra khi bạn mở trình duyệt và gõ một địa chỉ như:

Copy
www.example.com

Hãy tưởng tượng như bạn đang gửi một bức thư. Bạn viết địa chỉ lên phong bì, bỏ vào hộp thư, và bằng cách nào đó, như một phép màu, nó đến đúng nhà. Internet hoạt động gần giống như vậy.

Khi bạn gõ một địa chỉ web vào trình duyệt, bạn thực chất đang viết một địa chỉ số lên một phong bì. Ở phía sau, một hệ thống lớn đảm bảo rằng yêu cầu của bạn tìm thấy đúng đích đến gần như ngay lập tức.

Trong bài viết này, tôi sẽ hướng dẫn bạn qua hành trình của một yêu cầu:

  • Cách trình duyệt biết nơi cần đến.
  • Cách internet tìm đúng máy chủ.
  • Cách yêu cầu của bạn được dịch thành thông tin mà một ứng dụng web (như Django) có thể hiểu.
  • Cuối cùng, cách Django nhận yêu cầu, thực hiện các công việc cần thiết và gửi lại phản hồi.

Hãy coi bài viết này như một bản đồ về cơ chế hoạt động của web. Khi chúng ta hoàn thành, bạn sẽ hiểu cách thông tin chảy từ những cú gõ phím của bạn trong thanh trình duyệt, cho đến khi Django chạy trên một máy chủ và phản hồi với trang mà bạn thấy.

Cách Web Hoạt Động

Khi bạn nhấn Enter trong trình duyệt để truy cập vào www.example.com, một chuỗi sự kiện sẽ bắt đầu. Những bước nhỏ, vô hình (xảy ra trong vài mili giây) kết nối bạn với máy chủ đúng, lấy thông tin chính xác và hiển thị nó một cách gọn gàng trên màn hình của bạn.

Để hiểu cách yêu cầu đến máy chủ, chúng ta sẽ tập trung vào hai bước chính:

  • DNS (Hệ Thống Tên Miền)
  • HTTP (Giao Thức Truyền Tải Siêu Văn Bản)

DNS (Hệ Thống Tên Miền) Là Gì?

Mỗi máy tính kết nối với internet có thể được truy cập thông qua một số mạng gọi là địa chỉ IP. Có thể bạn đã thấy một số địa chỉ như:

  • 127.0.0.1 — địa chỉ mà máy tính của bạn sử dụng cho chính nó (trên mạng nội bộ).
  • 192.0.2.172 — một ví dụ về địa chỉ IP công cộng cho phép máy tính có thể truy cập internet.

Máy tính thích số. Nhưng với con người, việc nhớ những chuỗi số dài thật sự không thú vị. Đó là lúc Hệ Thống Tên Miền (DNS) xuất hiện.

DNS giống như danh bạ điện thoại của Internet. Khi bạn gõ một địa chỉ website (như example.com) vào trình duyệt, DNS sẽ dịch tên dễ nhớ đó thành địa chỉ IP thực tế của máy chủ đang lưu trữ trang web.

Cấu Trúc Của Tên Miền

Một tên miền có cấu trúc đơn giản, được tạo thành từ nhiều phần tách biệt bằng dấu chấm và đọc từ phải sang trái.

Lấy ví dụ của chúng ta: www.example.com

  • .com → Đây là Miền Cấp Cao Nhất (TLD). TLD được quản lý cẩn thận bởi một tổ chức gọi là ICANN. Bạn có thể cũng đã thấy những TLD khác như .org, .net, .dev, hoặc mã quốc gia như .ke (Kenya) hay .uk (Vương quốc Anh).
  • example → Đây là tên miền. Nó là danh tính độc nhất của một dịch vụ trên internet, phần mà người dùng dễ nhận diện nhất.
  • www → Đây được coi là tên miền phụ của một tên miền. Một tên miền có thể có nhiều tên miền phụ như www, m, mail, wiki, hoặc bất kỳ tên nào mà chủ tên miền muốn đặt. Tên miền phụ cũng có thể có nhiều cấp độ, vì vậy a.b.example.com là hợp lệ, và a là một tên miền phụ của b.example.com và b là một tên miền phụ của example.com.

Cho đến nay, chúng ta đã thấy cách internet sử dụng DNS như một danh bạ điện thoại khổng lồ (hoặc một hệ thống bưu chính toàn cầu) để biến những địa chỉ dễ nhớ như example.com thành địa chỉ IP chính xác của máy chủ mà bạn muốn truy cập. Nếu không có DNS, bạn sẽ phải ghi nhớ những con số thay vì tên, và web sẽ trở nên kém thân thiện hơn rất nhiều.

Nhưng việc tìm ra máy chủ đúng chỉ là khởi đầu. Khi trình duyệt của bạn biết nơi cần đến, câu hỏi lớn tiếp theo là: làm thế nào trình duyệt và máy chủ thực sự giao tiếp với nhau? Đó là lúc HTTP xuất hiện, ngôn ngữ của web.

Tiếp theo, chúng ta sẽ theo dõi yêu cầu một chút nữa và xem cách trình duyệt của bạn và Django trao đổi thông điệp, từng bước một.

HTTP — Ngôn Ngữ Của Web

Chúng ta đã thấy cách DNS hoạt động như danh bạ điện thoại của internet, giúp trình duyệt của bạn tìm đúng máy chủ phía sau một tên miền. Nhưng khi trình duyệt đã có địa chỉ của máy chủ, một câu hỏi khác xuất hiện:

Làm thế nào trình duyệt và máy chủ thực sự giao tiếp với nhau?

Đó là lúc HTTP (Giao Thức Truyền Tải Siêu Văn Bản) xuất hiện. Nếu DNS giống như hệ thống bưu chính đảm bảo rằng bức thư của bạn đến đúng nhà, thì HTTP là ngôn ngữ mà bạn và chủ nhà sử dụng khi bắt đầu cuộc trò chuyện ở cửa.

HTTP Là Gì?

HTTP là giao thức giao tiếp giữa trình duyệt (khách hàng) và máy chủ. Nó định nghĩa các quy tắc cho:

  • Cách yêu cầu nên được viết.
  • Cách máy chủ nên phản hồi.
  • Những gì xảy ra nếu có điều gì đó không ổn?

Mỗi khi bạn truy cập một trang web, trình duyệt của bạn âm thầm nói điều gì đó như:

“Chào máy chủ, tôi muốn trang chủ, làm ơn.”

Và máy chủ phản hồi:

“Đây, HTML, CSS, hình ảnh và mọi thứ bạn cần để hiển thị trang.”

Quá trình này diễn ra trong vài mili giây, nhưng nó là nền tảng của cách web hoạt động.

Cấu Trúc Của Một Yêu Cầu HTTP

Khi trình duyệt của bạn yêu cầu một trang, nó không chỉ hét lên “đưa cho tôi đồ!” Yêu cầu có cấu trúc, giống như một bức thư được viết tốt. Nó thường có ba phần chính:

  • Dòng Yêu Cầu Ví dụ: GET /about/ HTTP/1.1

Điều này cho máy chủ biết bạn muốn gì (GET có nghĩa là “lấy một cái gì đó,” /about/ có nghĩa là một đường dẫn đến một tài nguyên cụ thể trên trang web).

  • Headers

Hãy nghĩ về chúng như những ghi chú nhỏ với thông tin bổ sung.

Ví dụ: User-Agent: Chrome/120 (để máy chủ biết loại trình duyệt đang thực hiện yêu cầu).

  • Thân (đôi khi)

Đối với những yêu cầu như gửi một biểu mẫu, dữ liệu thực tế (ví dụ: tên người dùng/mật khẩu của bạn) sẽ được nhập ở đây.

Cấu Trúc Của Một Phản Hồi HTTP

Khi máy chủ hiểu yêu cầu của bạn, nó trả lời với một phản hồi có cấu trúc. Một lần nữa, có ba phần chính:

  • Dòng Trạng Thái

Ví dụ: 200 OK → Mọi thứ đã ổn.

Hoặc 404 Not Found → Trang không tồn tại.

Hoặc 500 Internal Server Error → Có điều gì đó bị lỗi ở phía máy chủ.

  • Headers

Thông tin bổ sung cho trình duyệt, chẳng hạn như thời gian lưu cache phản hồi hoặc loại tệp mà nó là.

  • Thân

Đây là nội dung thực tế, HTML, JSON, một hình ảnh, hoặc bất kỳ thứ gì mà trình duyệt đã yêu cầu.

Khi Yêu Cầu Cuối Cùng Đến Django

Được rồi, chúng ta đã nói về trình duyệt, DNS và HTTP. Chúng ta biết cách một yêu cầu rời khỏi trình duyệt, tìm đúng máy chủ và đến đích.

Bây giờ, chúng ta hãy tập trung vào Django. Đây là nơi mà hành động thực sự bắt đầu. Nhiệm vụ của Django có vẻ đơn giản: nhận một yêu cầu HTTP đến và trả về một phản hồi HTTP.

Phản hồi đó có thể là một trang web, dữ liệu JSON cho một API, hoặc thậm chí là tải xuống một tệp. Nhưng trước khi Django có thể tham gia, có một rào cản cuối cùng cần vượt qua: máy chủ web Python.

Máy Chủ Web Python

Khi mọi người nói về “máy chủ web”, họ có thể nghĩa hai điều:

  • máy tính chạy phần mềm, hoặc
  • phần mềm thực sự lắng nghe các yêu cầu.

Ở đây, chúng ta đang nói về phần mềm.

Máy chủ web là phần mềm đầu tiên thực sự *nghe * yêu cầu HTTP khi nó đến máy chủ. Nhiệm vụ của nó là chuyển đổi yêu cầu HTTP thô thành định dạng mà Django có thể hiểu.

Trong Python, có một định dạng gọi là WSGI (Web Server Gateway Interface). WSGI được sử dụng để bất kỳ máy chủ web nào (Gunicorn, uWSGI, hoặc mod_wsgi) có thể giao tiếp với bất kỳ framework web Python nào. Nếu không có WSGI tiêu chuẩn của Python, thì mỗi máy chủ web sẽ cần một cách tùy chỉnh để nói chuyện với mỗi framework.

Khi yêu cầu được chuyển giao bởi máy chủ thông qua WSGI, Django sẽ vào cuộc. Đây là lúc công việc của bạn với tư cách là một nhà phát triển Django thực sự quan trọng.

Công việc của bạn là:

  • Bảo cho Django biết những URL nào nó nên lắng nghe.
  • Viết các view quyết định những gì sẽ xảy ra khi những URL đó được yêu cầu.

Từ đó, Django sẽ xây dựng phản hồi, cho dù đó là render một template HTML, trả về dữ liệu JSON, hay chuyển hướng người dùng đến một nơi khác.

Thực Hành Tốt Nhất Khi Làm Việc Với Django

  • Tổ Chức Mã Nguồn: Luôn tổ chức mã nguồn của bạn một cách rõ ràng và có cấu trúc. Sử dụng các thư mục để tách biệt các ứng dụng và module khác nhau.
  • Sử Dụng Thư Viện: Tận dụng các thư viện và package có sẵn trong cộng đồng Django để cải thiện hiệu suất và giảm thời gian phát triển.
  • Bảo Mật: Đảm bảo rằng ứng dụng của bạn an toàn bằng cách sử dụng các biện pháp bảo mật như xác thực người dùng và kiểm tra quyền truy cập.

Những Cạm Bẫy Thường Gặp

  • Không Kiểm Tra Đầu Vào: Thiếu kiểm tra đầu vào có thể dẫn đến các lỗ hổng bảo mật. Hãy chắc chắn rằng bạn đang kiểm tra và xác thực dữ liệu từ người dùng.
  • Quản Lý Tình Trạng Kết Nối Yếu: Đảm bảo rằng ứng dụng của bạn xử lý tình trạng kết nối kém một cách mượt mà để tránh gián đoạn trải nghiệm người dùng.

Mẹo Tối Ưu Hiệu Suất

  • Sử Dụng Cache: Tận dụng cache để giảm tải cho máy chủ và cải thiện tốc độ tải trang.
  • Tối Ưu Truy Vấn Cơ Sở Dữ Liệu: Sử dụng các truy vấn hiệu quả và tránh truy vấn không cần thiết để cải thiện hiệu suất.

Giải Quyết Sự Cố

  • Kiểm Tra Log Lỗi: Luôn kiểm tra log lỗi để tìm ra các vấn đề phát sinh và khắc phục kịp thời.
  • Sử Dụng Công Cụ Gỡ Lỗi: Sử dụng các công cụ gỡ lỗi để theo dõi và phân tích các vấn đề trong mã của bạn.

Kết Luận

Trong bài viết này, chúng ta đã đi qua những khía cạnh cơ bản về cách mà web giao tiếp với Django. Hiểu rõ quy trình này sẽ giúp bạn phát triển các ứng dụng web mạnh mẽ hơn. Hãy tiếp tục theo dõi các bài viết sau, nơi chúng ta sẽ khám phá cách thiết lập Django, định nghĩa URL và nhóm các URL liên quan lại với nhau.

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào