2013-02-23 6 views
0

Я хотел бы сохранить себя набрав, когда я тестирую вещи в python manage.py shell. В основном у меня есть небольшой скрипт оболочки, который вводит меня в оболочку >>>, но я хотел бы иметь возможность автоматически вводить вызовы импорта в моем сценарии views.py, поэтому мне не нужно вводить их каждый раз, когда я хочу проверить что-то. Я попытался написать их в сценарии оболочки, но кажется, что они не были переданы оболочке python.Shell Scripting Python Shell импортирует

Вот что у меня есть.

#!/usr/local/bin/bash 
python ~/path/to/manage.py shell 

import datetime 
from django.shortcuts import render_to_response 
from mymodel.models import * 
from myapp.forms import * 
... and so on 

То, что я хотел бы случиться для всех импортных линий для толкания в оболочку Python, так что я не придется вводить/копировать-вставить их каждый раз, когда я хочу, чтобы отладить в оболочке.

+0

3 минуты, 3 ответов. Хорошая скорость ответа в пятницу вечером. –

+0

Только настоящие вундеркинды вышли в эту пятницу в пятницу :) – Brandon

ответ

1

Существует также Джанго-расширения: http://www.michelepasin.org/blog/2010/11/17/preloading-stuff-in-djangos-interactive-shell/

+0

Итак, если я это правильно понимаю, вы просто назовете 'python manage.py shell-plus.py'? –

+0

Это всего лишь одно из расширений команды. Эта конкретная команда будет автозагружать модели. Выезд: http://pythonhosted.org/django-extensions/command_extensions.html – Brandon

2

Положите ваш приквел в файл. Здесь я предполагаю, что это в файле с соответствующим именем prequel. Затем вы можете настроить ваш Баш скрипта так:

cat prequel - | python ~/path/to/manage.py shell 

cat сцепляет файлы, но это может относиться стандартный ввод как файл, так что мы конкатенация вашего приквели, а затем стандартный ввод, а затем конвейер, что конкатенация оболочки ,

+0

Ницца. Я не знал, что вы можете использовать 'cat' для этого. – Brandon

+0

Я думаю, что это работает. Я говорю, я думаю, потому что '>>>' не появляется, но кажется, когда я что-то печатаю, я нахожусь в оболочке. –

+0

@BrandonBertelsen: Я предполагаю, что он не будет печатать '>>>', если он не обнаружит, что его стандартный ввод - это tty. Если это канал из 'cat' (даже если' cat' получает свой вход от tty), он по-прежнему является трубой, а не tty, поэтому он не будет печатать '>>>'. Думаю, именно поэтому расширение Django было бы лучше. (Он может выполнять материал самостоятельно, не втирая стандартный ввод.) – icktoofay