Como faço para pré-carregar as importações para comandos shell manage.py do Django?

StackOverflow https://stackoverflow.com/questions/1836361

  •  11-09-2019
  •  | 
  •  

Pergunta

Quando eu executar shell manage.py no meu projeto Django para dar uma olhada em algo há importações comuns que eu sempre quero correr no início do shell (por exemplo, eu sempre quero importar meus arquivos de modelo.) Como pode Eu tenho estes run automaticamente toda vez que eu executar o comando shell?

2ª questão relacionada, quando eu bati a seta para cima Eu obter o caractere "^ A" em vez do comando executado anteriormente no shell manage.py (e na minha shell normal python), como posso corrigir isso para que ele carrega o comando anterior como na linha de comando Linux / Unix?

Foi útil?

Solução

Para a primeira pergunta, olhada no comando manage.py shell_plus fornecidos pela django- extensões projeto. Ele irá carregar todos os seus arquivos de modelo na inicialização do shell. O projeto tem toda uma carga de outros truques úteis também, por isso é definitivamente vale a pena conferir.

Para a segunda pergunta, só posso supor que você precisa instalar readline.

Outras dicas

você pode replicar o que

python manage.py shell

faz apenas fazendo:

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

e você terá o ambiente tudo pronto para o resto do script. Existem algumas outras maneiras de fazer isso aqui também: http : //www.b-list.org/weblog/2007/sep/22/standalone-django-scripts/

Uma coisa única que pode resolver ambos seu problema é ipython . ipython armazena as execuções anteriores e pode dar-lhe a conclusão bem.

Auto importação de pacotes usados ??com frequência em python manage.py shell_plus

Exemplo:

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

Referência:
https://github.com/django-extensions/django -extensions / blob / master / docs / shell_plus.rst

A adição de material extra para o shell Django pode ser feito usando como ponto de partida o comando shell_plus fornecidas no django-extesions aplicativo, e modificá-lo adicionando o que você deseja disponibilizar ao dicionário 'imported_objects'.

Por exemplo, se você duplicar o arquivo shell_plus.py e adicionar estas duas linhas no final:

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

Quando você executa o shell usando o novo arquivo a referência 'alist' estará disponível. Eu coloquei um exemplo mais aqui: http://www.michelepasin.org/techblog/?p= 1012

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top