2009-12-02 12 views
11

Cuando ejecuto el shell manage.py en mi proyecto Django para echar un vistazo a algo, hay importaciones comunes que siempre quiero ejecutar al inicio del shell (por ejemplo, siempre quiero importar los archivos de mi modelo). ¿Cómo puedo hacerlo? ¿Estos se ejecutan automáticamente cada vez que ejecuto el comando de shell?¿Cómo precargo las importaciones en el comando de shell manage.py de Django?

La segunda pregunta relacionada, cuando toco la flecha hacia arriba aparece el carácter "^ A" en lugar del comando ejecutado anteriormente en el shell manage.py (y en mi shell normal de python), ¿cómo puedo solucionarlo? carga el comando anterior como en la línea de comandos de Linux/Unix?

Respuesta

10

Para la primera pregunta, observe el comando manage.py shell_plus proporcionado por el proyecto django-extensions. Cargará todos sus archivos de modelo en el inicio del shell. El proyecto también tiene una gran cantidad de otros trucos útiles, así que definitivamente vale la pena echarle un vistazo.

Para la segunda pregunta, solo puedo adivinar que debe instalar readline.

2

Una sola cosa que puede resolver su problema es ipython. ipython almacena las ejecuciones anteriores y también puede darte por terminado.

+0

historial de guardado no resuelve el primer problema cuando eres co Actualmente se ejecuta en una nueva instancia (por ejemplo, heroku), mientras que shell_plus sí lo hace. –

0

Agregar cosas adicionales al shell django se puede hacer utilizando como punto de partida el comando shell_plus provisto en la aplicación django-extesions y modificándolo agregando lo que desee poner a disposición del diccionario 'import_objects'.

Por ejemplo, si se duplica el archivo shell_plus.py y añadir estas dos líneas al final:

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

Cuando se ejecuta el intérprete de comandos usando el nuevo archivo estará disponible la referencia 'a-lista'. que poner un ejemplo, ya que aquí: http://www.michelepasin.org/techblog/?p=1012

3

se puede replicar lo

python manage.py shell 

hace solo por hacer:

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

y usted tendrá el ambiente todo listo para el resto de ese guión. Hay algunas otras maneras de hacer esto aquí también: http://www.b-list.org/weblog/2007/sep/22/standalone-django-scripts/

+0

En mi caso, 'ImportError: no puedo importar el nombre' setup_environ 'me muestra – LKM

1

Auto importación de paquetes utilizados con frecuencia en python manage.py shell_plus

Ejemplo:

# 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>'] 

Referencia:
https://github.com/django-extensions/django-extensions/blob/master/docs/shell_plus.rst

+1

¡Excelente información gracias! – nehemiah

Cuestiones relacionadas