tutorial - python django example




Wo sollten Dienstprogramme in Django leben? (2)

Wo sollten Dienstprogramme in Django leben? Funktionen wie die benutzerdefinierte Verschlüsselung / Entschlüsselung einer Zahl, das Senden von Tweets, das Senden von E-Mails, das Überprüfen des Besitzes von Objekten, die Überprüfung der benutzerdefinierten Eingaben usw. Wiederholtes und benutzerdefiniertes Material, das ich an einer Reihe von Stellen in meiner App verwende. Ich zerbreche definitiv jetzt TROCKEN.

Ich habe einige Demos gesehen, bei denen Funktionen in models.py definiert wurden, obwohl mir das konzeptionell nicht recht schien. Sollten sie in eine "Dienstprogramme" -Anwendung gehen, die in mein Projekt importiert wird? Wenn ja, wohin gehen sie in der Dienstprogramme-App? Die models.py-Datei dort?

Danke, dass Sie diesem n00b geholfen haben.

UPDATE: Lassen Sie mich noch genauer sein. Angenommen, ich brauche eine Funktion "light_encrypt (number)", die den Parameter "number" nimmt, mit 7 multipliziert, 10 hinzufügt und das Ergebnis zurückgibt, und eine weitere Funktion "light_decrypt (encr_number)", die den Parameter "encr_number" nimmt, subtrahiert 10. dividiert durch 7 und gibt die Ergebnisse zurück. Wo in meinem Django-Baum würde ich das einfügen? Dies ist keine Middleware, oder? Wie Felix vorschlägt, erstelle ich ein Python-Paket und importiere es in die Ansicht, in der ich diese Funktionen benötige?


Andere question aber gleiche Antwort:

Mein übliches Layout für eine Django-Site ist:

projects/
templates/
common/
local/

Woher:

  • Projekte enthält Ihr Hauptprojekt und alle anderen
  • In common sind Dinge enthalten, die Sie möglicherweise für mehrere Websites freigeben oder zumindest nicht projektspezifisch sind, z. B. wenn Sie django-profile und django-registration herunterladen müssen, anstatt sie direkt in python / site-packages zu speichern
  • Vorlagen enthält genau das
  • local enthält Dinge, die für die aktuelle Maschine spezifisch sind, so dass Sie die Daten wie Datenbankstandort und Kennwort richtig trennen können. Ich verknüpfe dann die maschinenspezifischen Versionen (z. B. "machine1-localconfig.py") mit local / localconfig.py und kann dann in settings.py "localconfig importieren"
  • Im Allgemeinen füge ich Middleware hinzu, die projektspezifisch ist, und Middleware, die nicht projektspezifisch ist.
  • Stellen Sie sicher, dass Sie das Vorlagenverzeichnis an den richtigen Stellen in den Einstellungen hinzufügen (oder höchstwahrscheinlich localconfig.py und dann in den Einstellungen importieren), und stellen Sie sicher, dass Sie die Projekte, die allgemeinen und die lokalen Verzeichnisse zu Ihrem PYTHONPATH hinzufügen.

Hier ist eine andere Möglichkeit:

Wenn die Dienstprogrammfunktionen ein eigenständiges Modul sein können und Sie für Ihre django-App eine virtualenv-Umgebung verwenden, können Sie die Funktionalität als Paket bündeln und in Ihrer virtualenv installieren.

Dadurch ist es einfach zu importieren, wo immer Sie es in Ihrer Django-App benötigen.







structure