2009-12-02 16 views
11

Khi tôi chạy manage.py shell trên dự án Django của tôi để xem một cái gì đó có nhập khẩu phổ biến mà tôi luôn luôn muốn chạy ở đầu vỏ (ví dụ như tôi luôn luôn muốn nhập các tập tin mô hình của tôi.) Làm thế nào tôi có thể có những chạy tự động mỗi khi tôi chạy lệnh shell?Làm cách nào để tải trước nhập khẩu vào lệnh shell.py của Django?

Câu hỏi liên quan thứ hai, khi tôi nhấn mũi tên lên, tôi nhận được ký tự "^ A" thay vì lệnh chạy trước đó trong shell manage.py (và trong trình bao python thông thường), làm cách nào để khắc phục điều này tải lệnh trước như trên dòng lệnh Linux/Unix?

Trả lời

10

Đối với câu hỏi đầu tiên, hãy xem lệnh manage.py shell_plus do dự án django-extensions cung cấp. Nó sẽ tải tất cả các tệp mô hình của bạn khi khởi động trình bao. Dự án đã có một tải toàn bộ các thủ thuật hữu ích khác quá, vì vậy nó chắc chắn giá trị kiểm tra ra.

Đối với câu hỏi thứ hai, tôi chỉ có thể đoán rằng bạn cần cài đặt readline.

2

Một điều duy nhất có thể giải quyết được cả hai vấn đề của bạn là ipython. ipython lưu trữ các thực thi trước đó và nó có thể cung cấp cho bạn hoàn thành là tốt.

+0

lịch sử Saving không giải quyết được vấn đề đầu tiên khi bạn đồng nstantly chạy trên một trường hợp mới (ví dụ, heroku), trong khi shell_plus hiện. –

0

Thêm công cụ bổ sung vào vỏ django có thể được sử dụng làm điểm bắt đầu lệnh shell_plus được cung cấp trong ứng dụng django-extesions và sửa đổi bằng cách thêm bất kỳ thứ gì bạn muốn cung cấp cho từ điển 'imported_objects'.

Ví dụ nếu bạn lặp lại trong các tập tin shell_plus.py và thêm hai dòng sau vào cuối file:

# ....... 
alist = range(1000) 
imported_objects['alist'] = alist 
code.interact(local=imported_objects) # <-- this is the original final line 

Khi bạn chạy shell bằng cách sử dụng tập tin mới tham chiếu 'alist' sẽ có sẵn. tôi đặt một ví dụ nữa ở đây: http://www.michelepasin.org/techblog/?p=1012

3

bạn có thể sao chép những gì

python manage.py shell 

làm bằng cách chỉ thực hiện:

from django.core.management import setup_environ 
from mysite import settings 
setup_environ(settings) 

và bạn sẽ có môi trường tất cả các thiết lập cho phần còn lại của đó kịch bản. Có một số cách khác để làm điều này ở đây quá: http://www.b-list.org/weblog/2007/sep/22/standalone-django-scripts/

+0

Trong trường hợp của tôi, 'ImportError: không thể nhập tên' setup_environ 'hiển thị cho tôi – LKM

1

Auto import các gói thường được sử dụng trong python manage.py shell_plus

Ví dụ:

# local_settings 
SHELL_PLUS_PRE_IMPORTS = (
    ('<app_name>.models', '*'), 
    ('<app_name>.forms', '*'), 
    ('<app_name>.views', '*'), 
    ('django.core.urlresolvers', '*'), 
    ('django.db', 'connection'), 
    ('django.db', 'reset_queries'), 
) 

SHELL_PLUS_DONT_LOAD = ['<app_name>', '<app_name>'] 

tham khảo:
https://github.com/django-extensions/django-extensions/blob/master/docs/shell_plus.rst

+1

Thông tin tuyệt vời cảm ơn! – nehemiah

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