Python-Dokumentation für django.views.generic

Wenn ich in der Kommandozeile (Terminal in Ubuntu) folge folge:

pydoc django.views.generic 

Ich habe folgende Fehler:

  • Variable wechselt, ob es in Python Debugger existiert oder nicht
  • Wie man benutzerdefinierte Suchfeld in django admin hinzufügen
  • Verhindern Sie mehrere Formulareinreichungen in Django
  • Wie bekomme ich Objekt von PK in Django Vorlage?
  • Django + FastCGI - zufällige Anhebung von OperationalError
  • Das benutzerdefinierte Benutzermodell mit django-allauth speichern
  •  problem in django.views.generic - <class 'django.core.exceptions.ImproperlyConfigured'>: Requested setting DEFAULT_INDEX_TABLESPACE, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings 

    Wie kann man das Problem lösen?

    2 Solutions collect form web for “Python-Dokumentation für django.views.generic”

    Das Importieren vieler Djangos Module zieht in anderen Modulen, die davon abhängen, in einer Django Projektumgebung zu sein. Erstellen Sie ein Dummy-Projekt und verwenden Sie die Einstellungen.

     $ django-admin.py startproject dummy $ cd ./dummy $ DJANGO_SETTINGS_MODULE=dummy.settings pydoc django.views.generic 

    Beachten Sie die letzte Zeile, die die env var DJANGO_SETTINGS_MODULE auf den DJANGO_SETTINGS_MODULE der settings.py-Datei setzt. Normalerweise brauchst du das nicht seit manage.py und wsgi.py setze das für dich ein, aber pydoc weiß nichts davon.

    Wenn Sie bereits ein Projekt haben, können Sie das Dummy-Projekt offensichtlich überspringen und nutzen Sie einfach die Einstellungen Ihres Projekts.


    Bei der Verwendung von neueren Versionen von Django müssen Sie auch django.setup() anrufen, bevor Django in der Regel verwendbar ist. Wickeln Sie pydoc in ein Skript, um dies zu tun, anstatt rufen Sie pydoc direkt an.

    my_pydoc.py

     import django import pydoc import os os.environ['DJANGO_SETTINGS_MODULE'] = 'dummy.settings' django.setup() pydoc.cli() 
     python my_pydoc.py django.views.generic 

    Während die Antwort von davidism für einige Dinge funktioniert, wird es nicht für meine eigenen Apps funktionieren, da ich eine AppRegistryNotReady Ausnahme bekam. Ich fand, dass ich in meinen App-Dateien etwas Ad-Hocke machen musste, um es zu arbeiten:

     import sys importer = sys.modules['__main__'].__spec__ if importer.name == 'pydoc': import django django.setup() 

    Endlich funktioniert es, zumindest für views.py . Andere Dateien können andere Lösungen benötigen. Und das ist, ich bin ganz sicher, spröde und versionabhängig. Es funktioniert für Django 1.10.2 und Python 3.5.2.


    Duh Sys.argv [0] hat die gleiche info, /usr/lib/python3.5/pydoc.py .

    So könnte es einfacher und zuverlässiger durch:

     import sys, os if os.path.splitext(os.path.basename(sys.argv[0]))[0] == 'pydoc': import django django.setup() 
    Python ist die beste Programmiersprache der Welt.