2010-09-22 20 views
9

Các áp phích khác trước đó đã nói trong diễn đàn này rằng khi ứng dụng Django của bạn bắt đầu nhận được lớn và không thể quản lý, bạn nên chia nó thành nhiều ứng dụng. Tôi đang ở thời điểm đó. Các phương pháp hay nhất để cho phép liên lạc giữa các ứng dụng này là gì?Làm thế nào để nhiều ứng dụng Django giao tiếp với nhau?

Một trong các ứng dụng của tôi (hãy gọi nó là Bộ xử lý) xử lý các tập dữ liệu rất lớn. Mỗi giờ một lần, nó tạo ra một lượng nhỏ dữ liệu mới cho ứng dụng khác. Ứng dụng khác này (hãy gọi nó là Presenter) hiển thị dữ liệu cho người dùng.

Bộ xử lý đưa dữ liệu mới cho Người trình bày như thế nào? Nó chỉ đơn giản là nhập khẩu các phần của mô hình của người thuyết trình, để nó có thể tạo và lưu các bản ghi trong cơ sở dữ liệu của người trình bày? Điều đó có vẻ như khớp nối chặt chẽ với tôi. Hoặc nó sẽ vượt qua dữ liệu bằng cách gọi một hàm trong Presenter? Hoặc đặt dữ liệu trong một số loại lưu trữ dữ liệu mà cả Bộ xử lý và Người trình bày đều biết?

Bạn thường giải quyết vấn đề này như thế nào?

/Martin

Trả lời

4

Tôi chắc chắn sẽ tìm các mô hình Bộ xử lý nhập trong ứng dụng Trình bày. Đó là cách, ví dụ: bạn có thể thêm thông tin người dùng bổ sung: bạn có một mô hình UserPreferences với một số ForeignKeyField đến django.contrib.auth.models.User. Bạn có thể có ít cảm giác xấu khi làm điều đó giữa hai ứng dụng của bạn vì django.contrib là "thư viện chuẩn", tuy nhiên, nó là khớp nối trực tiếp.

Nếu các ứng dụng của bạn được ghép nối, thì mã của bạn nên được ghép nối để phản ánh điều này. Điều này sau ý tưởng rõ ràng là tốt hơn là ngầm, phải không?

Tuy nhiên, nếu your're thiết kế một cái gì đó một chút chung chung hơn (tức là bạn sẽ sử dụng nhiều trường hợp ứng dụng Presenter cho xử lý các loại khác nhau), bạn có thể lưu trữ các mô hình cụ thể như một khung cảnh:

import processor_x.models 
PRESENTER_PROCESSOR_MODELS = presenter_x.models 

Sau đó, trong các mô hình trình bày của bạn:

from django.conf import settings 
class Presenter: 
    processor = models.ForeignKey(settings.PRESENTER_PROCESSOR_MODELS) 

Caveat: tôi chưa bao giờ cố gắng này, nhưng tôi không nhớ một giới hạn trên các thiết lập để chỉ chuỗi, tuples hoặc danh sách!

+0

"rõ ràng là tốt hơn là ngầm" - điểm tốt, điều đó làm cho tôi cảm thấy tốt hơn về việc nhập một phần mô hình của Người trình bày vào ứng dụng Bộ xử lý. –

Các vấn đề liên quan