2013-07-31 13 views
7

Hãy tưởng tượng tôi có hai hoặc nhiều ứng dụng trong dự án django của mình, tôi đã có thể ghi và thực hiện thành công lệnh manage.py tùy chỉnh khi tôi chỉ có một ứng dụng, A.Cách viết lệnh django manage.py tùy chỉnh trong nhiều ứng dụng

Bây giờ tôi có một ứng dụng mới, B và như được đề cập trong https://docs.djangoproject.com/en/dev/howto/custom-management-commands/ Tôi đã tạo cấu trúc thư mục B/manangement/commands và đã viết mô-đun tùy chỉnh.

Khi tôi chạy python manage.py, nó tiếp tục khiếu nại Unknown command. Tuy nhiên, nếu tôi chuyển lệnh này sang ứng dụng khác, tức là vào thư mục A/management/commands và sau đó chạy python manage.py <command>, nó hoạt động liền mạch.

Bất kỳ ý tưởng nào về cách tôi có thể giải quyết vấn đề này?

+0

Không có bạn không cho chúng tôi thấy chính xác những gì bạn đã làm. –

+1

Có thể bạn chưa thêm B trong ứng dụng đã cài đặt trong cài đặt. – Babu

+0

Tôi đoán là một lỗi đánh máy nhưng tốt hơn chỉ ra nó. Từ 'manangement' bị viết sai chính tả. –

Trả lời

16

Như @Babu đã nói trong nhận xét, Có vẻ như bạn có thể chưa thêm ứng dụng của mình vào INSTALLED_APPS trong số settings.py.

Cũng có thể bạn đang thiếu các tệp __init__.py (được yêu cầu trong mô đun python) từ thư mục managementcommands.

Ngoài ra, (xin lỗi để nói điều này) bạn có thể đã bỏ lỡ "quản lý" hoặc "lệnh", hoặc thậm chí là tên của lệnh bạn đang chạy.

+0

Cảm ơn, các tập tin __init__.py đã có trong các thư mục bên trong, bỏ qua trong thư mục cao hơn. – user1335608

0

Nhiều khả năng, bạn không bao gồm ứng dụng B trong settings.py của bạn

Nếu bạn chỉ cần chạy python manage.py không có lệnh quy định, nó sẽ in danh sách các lệnh Django có thể tìm thấy.

này có thể giúp loại trừ lỗi chính tả tên lệnh, nhưng không trả lời câu hỏi có hay không bạn đã thực hiện managementcommands cả gói, hoặc nếu ứng dụng của B chỉ đơn giản là không được liệt kê trong bạn settings.INSTALLED_APPS

0

Nó có vẻ như bạn chưa đăng ký ứng dụng B trong INSTALLED_APPS trong settings.py. Bạn cũng cần phải thêm tệp __init__.py vào cả hai thư mục (quản lýlệnh) để đặt làm gói. Hãy chắc chắn rằng bạn đánh vần tên thư mục chính xác.