2012-05-23 37 views
6

Tôi có phần mềm trung gian để thực hiện một số phép tính/kiểm tra từng yêu cầu đến. Một số xem cần kết quả tính toán này.Phần mềm trung gian Django và thay đổi HttpRequest

Vì tôi không muốn gọi cùng một mã hai lần, tôi muốn đặt kết quả vào HttpRequest trong phần mềm trung gian, vì vậy, chế độ xem sẽ có thể đọc được.

Bạn có thể giúp tôi với gợi ý đúng, làm cách nào để thêm đối tượng vào HttpRequest?

nhờ

Trả lời

6

HttpRequest là một lớp học bình thường, bạn có thể gán trực tiếp các đối tượng để dụ nó, là request, trong middleware. Ví dụ:

class MyMiddleware(object): 
    def process_request(self, request): 
     request.foo = 'bar' 
+0

vâng, đúng thế! cảm ơn –

0

Bạn có thể mở rộng HttpResponse bằng cách sử dụng phương pháp "monkey-patch". Ví dụ, bạn có thể dễ dàng thêm hoặc thay thế các phương pháp và tài sản vào HttpResponse bằng cách gọi hàm sau từ bên trong thư mục gốc của bạn __init__.py hoặc wsgi.py hay thậm chí settings.py:

def apply_http_request_patch(): 

    def get_property_value(request): 
     # return lazily evaluated value 

    from django.http import HttpRequest 
    HttpRequest.some_property = property(get_property_value) 
Các vấn đề liên quan