Frage

Wenn ich laufe manage.py Shell auf meinem Django-Projekt einen Blick auf etwas zu nehmen gibt es gemeinsame Importe, die ich immer am Anfang des Shell ausgeführt werden soll (zB Ich will immer meine Modell-Dateien importieren.) Wie kann ich habe diese automatisch jedes Mal laufe ich den Shell-Befehl ausführen?

2. bezogene Frage, wenn ich traf der Pfeil nach oben ich die „^ A“ Zeichen anstelle des zuvor ausgeführten Befehls in dem manage.py Shell (und in meinem normalen Python-Shell) erhalten, wie kann ich dieses Problem beheben, so lädt es der vorherige Befehl wie auf der Linux / Unix-Kommandozeile?

War es hilfreich?

Lösung

Für die erste Frage, Blick auf dem manage.py shell_plus Befehl von der django- Erweiterungen Projekt. Es wird alle Modelldateien auf Shell-Start laden. Das Projekt hat auch eine ganze Menge andere nützliche Tricks bekam, so ist es auf jeden Fall einen Besuch wert.

Für die zweite Frage kann ich nur vermuten, dass Sie readline installieren.

Andere Tipps

Sie können replizieren, was

python manage.py shell

tut, indem nur tun:

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

und Sie erhalten die Umwelt haben alle für den Rest dieses Skript einrichten. Es gibt einige andere Möglichkeiten, dies hier zu tun: http : //www.b-list.org/weblog/2007/sep/22/standalone-django-scripts/

Eine einzige Sache, die beide Ihr Problem lösen können, ist ipython . ipython speichert die vorherigen Ausführungen und es kann Ihnen Abschluss auch geben.

Auto häufig verwendete Pakete in python manage.py shell_plus Import

Beispiel:

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

Hinweis:
https://github.com/django-extensions/django -extensions / Blob / Master / docs / shell_plus.rst

Hinzufügen von Extramaterial an dem django Shell kann den shell_plus Befehl in dem django-extesions app, und es modifizieren durch Zugabe von was auch immer Sie auf die ‚imported_objects‘ Wörterbuch zur Verfügung stellen möchten.

Wenn Sie zB die shell_plus.py Datei kopieren und diese zwei Zeilen am Ende hinzufügen:

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

Wenn Sie die Shell ausgeführt wird die neue Datei mit der ‚alist‘ Referenz zur Verfügung. Ich habe ein längeres Beispiel hier: http://www.michelepasin.org/techblog/?p= 1012

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top