Heim  >  Artikel  >  Web-Frontend  >  Fassen Sie die Erfahrungen mit der Verwendung von Python Django in der Entwicklung zusammen

Fassen Sie die Erfahrungen mit der Verwendung von Python Django in der Entwicklung zusammen

php中世界最好的语言
php中世界最好的语言Original
2018-02-26 09:17:101832Durchsuche

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 = {
    &#39;version&#39;: 1,
    &#39;disable_existing_loggers&#39;: False,
    &#39;formatters&#39;: {
        &#39;verbose&#39;: {
            &#39;format&#39;: &#39;[application] %(levelname)s %(asctime)s %(module)s %(message)s&#39;
        }
    },
    &#39;handlers&#39;: {
        &#39;console&#39;: {
            &#39;level&#39;: &#39;DEBUG&#39;,
            &#39;class&#39;: &#39;logging.StreamHandler&#39;,
            &#39;stream&#39;: sys.stdout,
            &#39;formatter&#39;: &#39;verbose&#39;
        },
    },
    &#39;loggers&#39;: {
        &#39;app&#39;: {
            &#39;handlers&#39;: [&#39;console&#39;],
            &#39;level&#39;: &#39;DEBUG&#39;,
            &#39;propagate&#39;: 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(&#39;04:00&#39;).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:

Vue-CSS-Animation

Lösung für die Lücke zwischen Bild- und Ansichts-Tags

Warum werden Slots in Unterkomponenten verwendet?

So verwenden Sie getBoundingClientRect(), um die Scroll-Fixierung von Div-Containern zu implementieren

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Vue CSS-AnimationNächster Artikel:Vue CSS-Animation