[PYTHON] Ich habe versucht, Stoff, Küche und Jinja2 zu kombinieren

Es ist ein Memo, also ist es rau. Ich konnte so etwas machen

Was du machen willst

Ich entwickle mehrere Django-Apps und stelle sie mithilfe von Fabric and Cuisine bereit. Es gibt Variablen, die sich je nach Beschreibung und Umgebung (Entwicklung, Staging, Produktion) in settings.py unterscheiden und die ich nicht auf github setzen möchte, also möchte ich sie von der lokalen Datei in die Remote-Server-Datei übertragen

Code

Vorlagendatei

project_root/settings/production.py



#Allgemeine Einstellungselemente werden in allen Umgebungen projiziert_root/settings/common.Ich habe es mit py gemeinsam.

from sample_app.settings.common import *

SECRET_KEY = '{{ secret_key }}'

DEBUG = False

ALLOWED_HOSTS = ['127.0.0.1']

DATABASES = {
    'default': {
        'ENGINE': '{{ databases.default.engine }}',
        'NAME': '{{ databases.default.name }}',
        'USER': '{{ databases.default.user }}',
        'PASSWORD': '{{ databases.default.password }}',
        'HOST': '{{ databases.default.host }}',
        'PORT': {{ databases.default.port }},
    }
}

Yaml-Datei

Der Wert ist angemessen

secrets.yml


django:
  settings:
    production:
      secret_key: ''
      databases:
        default:
          engine: django.db.backends.mysql
          name: sample_app
          user: root
          password: ''
          host: 127.0.0.1
          port: 3306

Prozess des Hochladens einer Datei

Anstatt hochzuladen, ist es richtiger zu sagen, dass Sie eine Datei mit dem remote angegebenen Inhalt erstellen.

from jinja2 import Environment, FileSystemLoader
from cuisine import file_write

secrets = yaml.load(file('secrets.yml'))
local_template_name = local_template_path.split('/')[-1]
local_template_dir = local_template_path.replace(local_template_name, '')

#Die folgenden 3 Zeilen sind die Hauptverarbeitung. Rufen Sie die Zeichenfolge ab, die die Variable in die Vorlage einbettet, und erstellen Sie eine Datei, die sie enthält, auf dem Remoteserver.
jinja2_env = Environment(loader=FileSystemLoader(local_template_dir))
content = jinja2_env.get_template(local_template_name).render(secrets['django']['settings']['production'])
file_write(remote_path, content.encode('utf-8'))

Referenz

https://gist.github.com/wrunk/1317933

Recommended Posts

Ich habe versucht, Stoff, Küche und Jinja2 zu kombinieren
Ich habe versucht, jinja2 zu verwenden
Ich habe Klinge und Jinja2 verglichen
Ich habe versucht, PyEZ und JSNAPy zu verwenden. Teil 2: Ich habe versucht, PyEZ zu verwenden
Ich habe versucht, PyEZ und JSNAPy zu verwenden. Teil 1: Übersicht
Ich habe versucht, Web-Scraping mit Python und Selen
Ich habe DCGAN implementiert und versucht, Äpfel zu generieren
Ich habe versucht zu kratzen
Ich habe versucht, Objekte mit Python und OpenCV zu erkennen
Ich habe versucht, mit PartiQL und MongoDB verbunden zu spielen
Ich habe Jacobian und teilweise Differenzierung mit Python versucht
Ich habe Funktionssynthese und Curry mit Python versucht
Ich habe AutoKeras ausprobiert
Ich habe es mit Papiermühle versucht
Ich habe versucht, morphologische Analyse und Wortvektorisierung
Ich habe versucht, Django-Slack
Ich habe es mit Django versucht
Ich habe es mit Spleeter versucht
Ich habe es mit cgo versucht
[Einführung in PID] Ich habe versucht, ♬ zu steuern und zu spielen
Ich habe versucht, mit VOICEROID2 2 automatisch zu lesen und zu speichern
Ich habe pipenv und asdf für die Python-Versionskontrolle ausprobiert
Ich habe versucht, Google Test und CMake in C zu verwenden
Ich habe versucht, CPython ein Post-Inkrement hinzuzufügen. Übersicht und Zusammenfassung
Ich habe versucht, mit VOICEROID2 automatisch zu lesen und zu speichern
Ich habe versucht, Linux Systemaufrufe und Scheduler hinzuzufügen
Ich habe versucht, Grad-CAM mit Keras und Tensorflow zu implementieren
Python: Ich habe es mit Lügner und Ehrlichkeit versucht
Ich habe versucht, Scrapy auf Anaconda zu installieren und konnte es nicht
Ich habe versucht, parametrisiert zu verwenden
Ich habe versucht, Mimesis zu verwenden
Ich habe versucht, anytree zu verwenden
Ich habe versucht, Pymc auszuführen
Ich habe ARP-Spoofing ausprobiert
Ich habe versucht, aiomysql zu verwenden
Ich habe versucht, Summpy zu verwenden
Ich habe Python> autopep8 ausprobiert
Ich habe versucht, Coturn zu verwenden
Ich habe versucht, Pipenv zu verwenden
Ich habe versucht, Matplotlib zu verwenden
Ich habe versucht, "Anvil" zu verwenden.
Ich habe versucht, Hubot zu verwenden
Ich habe versucht, ESPCN zu verwenden
Ich habe PyCaret2.0 (pycaret-nightly) ausprobiert.
Ich habe versucht, openpyxl zu verwenden
Ich habe versucht, tief zu lernen
Ich habe AWS CDK ausprobiert!
Ich habe versucht, Ipython zu verwenden
Ich habe versucht zu debuggen.
Ich habe versucht, PyCaret zu verwenden
Ich habe versucht, Cron zu verwenden
Ich habe Kivys Kartenansicht ausprobiert
Ich habe versucht, ngrok zu verwenden
Ich habe versucht, face_recognition zu verwenden
Ich habe versucht, Jupyter zu verwenden
Ich habe versucht, EfficientDet zu verschieben
Ich habe versucht, Shell zu programmieren