Cette fois, je vais vous apporter un résumé de l'expérience python Django en développement, quelles sont les précautions dans le développement python Django, comme suit Ceci est un cas pratique, jetons-y un coup d'œil.
Je suis entré en contact avec Django pour la première fois lorsque j'étais junior à l'université. Cela fait presque 4 ans que je n'utilise pas Django pour réaliser des projets. Mon préféré est en fait le framework ORM de Django. Les projets de l'entreprise sont séparés d'avant en arrière et il est très efficace d'utiliser Django pour le développement d'interfaces back-end.
Résumez ci-dessous quelques expériences de développement de Django. Parlons d’abord de quelques-uns des éléments les plus fondamentaux.
Utilisez virtualenv pour isoler l'environnement de développement
Utilisez pip pour gérer les dépendances du projet, principalement une petite astuce, utilisez pip freeze > et versionUtilisez le fichier .gitignore fourni par gitignore.io pour gérer les fichiers de base de code
Packaging et publication
Packaging et publication du projet
Docker, le Dockerfile du projet Django est très simple :
Ce modèle Dockerfile peut couvrir 80% des projets Django.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>
Configuration du journal
Depuis que j'utilise Docker, j'ai renoncé à écrire le journal
dans le fichieret l'ai écrit directement sur la sortie standard.
# 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, }, }, }
La nouvelle version d'uwsgi peut déjà collecter les journaux d'applications Web et les afficher sur la sortie standard. Si vous devez collecter et gérer des journaux, vous pouvez utiliser l'outil de collecte de journaux Docker pour collecter directement les journaux du conteneur Docker.
Tests automatisés
Comme il s'agit d'un projet purement back-end, les ingénieurs peuvent tester leur propre code grâce à des tests automatisés. Django lui-même fournit un bon support pour les tests. Vous pouvez utiliser
sqlitepour créer une base de données de test et le cache basé sur la mémoire n'augmentera pas la dépendance vis-à-vis des autres systèmes. Développez avec moins d’effort. En plus d'écrire du code de test automatisé, vous devez également être capable de compter la couverture des tests. Actuellement, nous utilisons l'outil cover.py Pour être honnête, il n'est pas aussi facile à utiliser qu'Istanbul de
node.js, et le rapport de sortie n'est pas aussi détaillé et facile à lire qu'Istanbul. Cependant, cela reste utile pour vérifier le « code mort ». Test du code http
Certains projets doivent se connecter à davantage de systèmes tiers, tels que l'authentification WeChat, le paiement, les SMS et d'autres systèmes courants, et il peut y avoir d'autres systèmes dans les entreprises verticales champs. Cette partie du code d'accueil de l'interface doit également être incluse dans le test. Après tout, Python est un langage de script et le code est sujet aux erreurs.
Ceci utilise généralement le module de réponses pour simuler les requêtes http.
Tâches chronométrées
Certains projets Django doivent effectuer des tâches chronométrées. Tout d’abord, n’utilisez jamais la crontab intégrée à Linux. Le principal problème est que le coût de maintenance est élevé, et cette configuration risque d'être oubliée un jour.
Notre méthode actuelle consiste à utiliser la fonction de Django Command pour encapsuler les tâches planifiées dans une commande. Exécutez un planificateur dans cette commande. Tout comme ce qui suit :
Si vous avez des questions à ce sujet, vous pouvez me les poser à tout moment. J'ai effectué des recherches approfondies sur les méthodes d'apprentissage, la planification systématique de l'apprentissage et l'efficacité de l'apprentissage. j'espère que cela pourra aider tout le monde à éviter les détours. Les trois premiers du groupe d'échange de débutants Python sont : 463, les trois du milieu sont : 024 et les trois derniers sont : 091import 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)
Je pense que vous maîtrisez la méthode après avoir lu ces cas. Veuillez faire attention pour en savoir plus. des choses passionnantes. Autres articles connexes sur le site Web chinois de php !
Lecture connexe :
vue css animationSolution à l'écart entre les balises d'image et de vuePourquoi les emplacements sont-ils utilisés dans les sous-composantsComment utiliser getBoundingClientRect() pour implémenter la fixation par défilement des conteneurs divCe qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!