Dieses Mal werde ich Ihnen wie folgt eine Zusammenfassung der Python Django-Entwicklungserfahrungen und der Vorsichtsmaßnahmen bei der Python-Django-Entwicklung geben. Dies ist ein Praktischer Fall, werfen wir einen Blick darauf.
Ich kam zum ersten Mal mit Django in Kontakt, als ich noch ein Student war. Es ist fast vier Jahre her, seit ich Django tatsächlich für Projekte verwendet habe. Mein Favorit ist eigentlich das ORM-Framework von Django. Die Projekte des Unternehmens sind von vorne nach hinten getrennt und es ist sehr effizient, Django für die Entwicklung von Back-End-Schnittstellen zu verwenden.
Hiermit fassen wir einige kleine Erfahrungen in der Django-Entwicklung zusammen. Lassen Sie uns zunächst über einige der grundlegendsten Dinge sprechen.
Verwenden Sie virtualenv, um die Entwicklungsumgebung zu isolieren.
Verwenden Sie pip, um Projektabhängigkeiten zu verwalten. Dies ist hauptsächlich ein kleiner Trick. Verwenden Sie pip freeze > requirements.txt, um abhängige Module zu speichern und Version
Verwenden Sie die von gitignore.io bereitgestellte .gitignore-Datei, um Codebasisdateien zu verwalten
Verpacken und Veröffentlichen
Verpacken und Veröffentlichen des ProjektsDocker, das Dockerfile des Django-Projekts ist sehr einfach:
FROM python:3.5 COPY ./requirements.txt /src WORKDIR /src RUN pip install -r requirements.txt COPY . /src EXPOSE CMD uwsgi --http :--wsgi-file<path/to/wsgi.py>
Diese Dockerfile-Vorlage kann 80 % der Django-Projekte abdecken.
Protokollkonfiguration
Da ich Docker verwende, habe ich es aufgegeben, das -Protokoll in die -Datei zu schreiben, und es direkt in die Standardausgabe geschrieben.
# settings.py # ... LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'formatters': { 'verbose': { 'format': '[application] %(levelname)s %(asctime)s %(module)s %(message)s' } }, 'handlers': { 'console': { 'level': 'DEBUG', 'class': 'logging.StreamHandler', 'stream': sys.stdout, 'formatter': 'verbose' }, }, 'loggers': { 'app': { 'handlers': ['console'], 'level': 'DEBUG', 'propagate': True, }, }, }
Die neue Version von uwsgi kann bereits Webapp-Protokolle sammeln und auf der Standardausgabe ausgeben. Wenn Sie Protokolle sammeln und verwalten müssen, können Sie das Docker-Protokollsammlungstool verwenden, um die Protokolle des Docker-Containers direkt zu sammeln.
Automatisierte Tests
Da es sich um ein reines Back-End-Projekt handelt, können Ingenieure ihren eigenen Code durch automatisierte Tests testen. Django selbst bietet eine gute Unterstützung für Tests. Sie können SQLite verwenden, um eine Testdatenbank zu erstellen, und speicherbasierte Tests erhöhen nicht die Abhängigkeit von anderen Systemen. Entwickeln Sie mit weniger Aufwand.
Neben dem Schreiben automatisierten Testcodes müssen Sie auch in der Lage sein, die Testabdeckung zu zählen. Derzeit verwenden wir das Tool cover.py. Ehrlich gesagt ist es nicht so einfach zu verwenden wie istanbul von node.js, und der Ausgabebericht ist nicht so detailliert und leicht zu lesen wie Istanbul. Es ist jedoch immer noch nützlich, um „toten Code“ zu überprüfen.
Testen auf http-Code
Einige Projekte müssen eine Verbindung zu weiteren Systemen von Drittanbietern herstellen, z. B. WeChat-Authentifizierung, Zahlung, SMS und anderen gängigen Systemen, und im vertikalen Geschäft gibt es möglicherweise andere Systeme Felder. Dieser Teil des Schnittstellen-Docking-Codes sollte ebenfalls in den Test einbezogen werden. Schließlich ist Python eine Skriptsprache und der Code ist fehleranfällig.
Hierbei wird normalerweise das Antwortmodul verwendet, um http-Anfragen zu verspotten.
Zeitgesteuerte Aufgaben
Es gibt einige Django-Projekte, die einige zeitgesteuerte Aufgaben erledigen müssen. Erstens: Verwenden Sie niemals die in Linux integrierte Crontab. Das Hauptproblem besteht darin, dass die Wartungskosten hoch sind und diese Konfiguration eines Tages möglicherweise vergessen wird.
Unsere aktuelle Methode besteht darin, die Funktion von Django Command zu verwenden, um geplante Aufgaben in einen Befehl zu kapseln. Führen Sie in diesem Befehl einen Scheduler aus. Genau wie das Folgende:
import schedule from django.core.management.base import BaseCommand class Command(BaseCommand): def handle(self, *args, **kwargs): schedule.every(45).minutes.do(do_this) schedule.every().day.at('04:00').do(do_that) while True: schedule.run_pending() time.sleep(1)
Wenn Sie Fragen dazu haben, können Sie mich jederzeit ausführlich über Lernmethoden, systematische Lernplanung und Lerneffizienz informieren Ich hoffe, es kann allen helfen, Umwege zu vermeiden. Die ersten drei in der Python-Anfänger-Austauschgruppe sind: 463, die mittleren drei sind: 024 und die letzten drei sind: 091
Ich glaube, dass Sie die Methode beherrschen, nachdem Sie diese Fälle gelesen haben. Bitte achten Sie darauf, mehr zu erfahren Spannende Dinge. Weitere verwandte Artikel auf der chinesischen PHP-Website!
Verwandte Lektüre:
Lösung für die Lücke zwischen Bild- und Ansichts-Tags
Warum werden Slots in Unterkomponenten verwendet?
Das obige ist der detaillierte Inhalt vonFassen Sie die Erfahrungen mit der Verwendung von Python Django in der Entwicklung zusammen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!