Dường như với tôi rằng mọi thứ mà bộ xử lý ngữ cảnh có thể làm, phần mềm trung gian có thể làm. Vậy điểm xử lý ngữ cảnh là gì? Họ chỉ là middleware-lite?Trình xử lý ngữ cảnh và phần mềm trung gian trong django
Trả lời
Trình xử lý ngữ cảnh được sử dụng để cung cấp các mẫu có dữ liệu bổ sung. Middleware là để chặn các đối tượng yêu cầu/phản hồi và sửa đổi chúng (hoặc kích hoạt hành vi khác) theo một cách có ý nghĩa.
Chúng hoạt động ở cấp độ ngăn xếp khác nhau cho ngữ cảnh khác nhau. Nó thường khó để giữ ngăn xếp của một khuôn khổ để được hoàn toàn chính thống, đặc biệt là điều duy nhất một khuôn khổ web như chế biến Django là yêu cầu và phản ứng. Có, chúng ta có thể sử dụng request.user, thay vì context.user bởi context_processor khi rendering template. Nhưng bạn có thể không muốn các thuộc tính chỉ được sử dụng trong mẫu, được đặt trên mọi yêu cầu.
Ngoài ra, trình trang trí linh hoạt hơn phần mềm trung gian cho hoạt động ở cấp chế độ xem, nhưng phần mềm trung gian khó nói của nó là trang trí-lite. Tôi muốn xử lý các bộ xử lý ngữ cảnh như các thẻ mẫu gán nhưng được nạp tự động, nhân tiện.
Phần mềm trung gian đóng vai trò như một móc nối trong quá trình xử lý yêu cầu/phản hồi của Django ở mức thấp và nhẹ. Các móc có sẵn để yêu cầu, phản hồi, xem, template_response và xử lý ngoại lệ. Móc có thể cần phải sửa đổi yêu cầu trước khi chế độ xem xử lý nó, có thể cần phải ghi lại thông tin về yêu cầu cho mục đích gỡ lỗi, kiểm tra cookie để đặt địa phương, v.v.
Đọc thêm trên Middleware.
Trình xử lý ngữ cảnh chỉ sửa đổi ngữ cảnh. Ngữ cảnh là ánh xạ giá trị khóa với các biến được chuyển đến một mẫu. Một bộ xử lý ngữ cảnh nhận một đối tượng yêu cầu làm đối số của nó và trả về một từ điển các mục được hợp nhất vào ngữ cảnh. Bối cảnh được đưa vào mẫu của bạn theo quan điểm của bạn và nó đính kèm bất cứ thứ gì khác mà bộ xử lý ngữ cảnh của bạn hợp nhất. Bạn có thể coi nó như là một biến ngữ cảnh chung, sẵn sàng cho bạn ở tất cả các mẫu của bạn.
Đọc thêm trên Context Processors.
Cả hai đều khá đơn giản để viết và có mục đích của chúng. Dưới đây là một sơ đồ cho thấy nơi trung gian và bối cảnh phù hợp trong một dòng chảy django tiêu biểu:
Django Flowchart
dùng yêu cầu một trang
Yêu cầu đạt Yêu cầu middlewares, có thể thao tác hoặc trả lời yêu cầu
URLĐăng nhập rela ted Xem bằng cách sử dụng url.py
Xem middlewares được gọi là, có thể thao tác hoặc trả lời các yêu cầu
Chức năng xem được gọi
Quan điểm có thể tùy chọn truy cập dữ liệu thông qua mô hình
Tất cả các mô hình để Tương tác -DB được thực hiện qua người quản lý
Chế độ xem có thể sử dụng ngữ cảnh đặc biệt nếu cần
Ngữ cảnh được chuyển đến Mẫu để hiển thị