Es ist nicht sehr elegant, für jede anzuzeigende Seite ein Programm zu schreiben und HTML-Code darin zu schreiben. Also möchte ich es machen, bis die Vorlage gelesen und angezeigt wird.
Beim Erstellen eines Frameworks möchte ich es für jede Funktion in Klassendateien unterteilen. Wenn Sie das Klassen-Autoload zu diesem Zeitpunkt erstellen und betreiben, legen Sie es zu einem gewissen Grad in der Einstellungsdatei fest. Es gibt auch eine Methode zum Schreiben in eine INI-Datei. Da ich das erstellte Projekt jedoch am Bereitstellungsziel ohne Bearbeitung ausführen möchte, gebe ich das Projektstammverzeichnis und den Speicherort der darauf basierenden Einstellungsdatei an. Beschreiben Sie zunächst die Implementierung zur Angabe des Projektstammverzeichnisses.
Die Verzeichnisstruktur ist diesmal wie folgt. +PROJECR_ROOT ++app | +app | + Vorlagen (Speicherort der Vorlagendatei) | + index.tpl (Vorlagendatei) ++public | + index.py (Programmkörper) | +uwsgi.ini | +uwsgi.pid |+uwsgi.log +templates + index.tpl (Vorlagendatei) Wenn Sie wie folgt schreiben, können Sie das Verzeichnis eine Ebene über dem öffentlichen Verzeichnis, dh dem Projektstammverzeichnis, abrufen.
index.py (Auszug)
project_root = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
logger.info('project_root:' + project_root)
Jetzt können Sie das Routenverzeichnis Ihres Projekts abrufen.
Nachdem das Projektstammverzeichnis identifiziert wurde, geben wir ab diesem Punkt den Speicherort der Einstellungsdatei und der Vorlagendatei an. Der vollständige Pfad der Datei wird später festgelegt, einschließlich des Namens des Controllers. Derzeit wird jedoch PROJEC_ROOT / app / templates / index.tpl gelesen. In dem diesmal erstellten Framework wird die geladene Vorlage in einem Array gespeichert, zeilenweise gelesen, interpretiert und angezeigt. Um die Sichtbarkeit der Programmquelle zu verbessern, werden die Methode zum Erstellen von Ansichten und die Methode zum Lesen von Dateien getrennt. Die Dateilesemethode liest die Datei und gibt das Ergebnis als Listentyp an die Ansichtserstellungsmethode zurück. Die Ansichtserstellungsmethode verkettet sie mit einer Array-Zeichenfolge und gibt sie an die Anwendungsmethode zurück und gibt die Ansicht von der Anwendung an uwsgi zurück. Der Code ist unten.
index.py
# index.py
# coding:utf-8
import logging
import datetime
import uuid
import os, sys
handler = logging.StreamHandler()
handler.setFormatter(logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s'))
logger = logging.getLogger()
logger.addHandler(handler)
logger.setLevel(logging.INFO)
project_root = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
def main():
# log
logger.info('test-log-dayo')
def application(env, start_response):
main()
logger.info('project_root:' + project_root)
start_response('200 OK', [('Content-type', 'text/html')])
str = createView('index.tpl')
return [str.encode("utf-8")]
def createView(file_name):
arr = readTemplate(project_root + '/app/templates/' + file_name)
str = ""
for line in arr:
str = str + line
return str
def readTemplate(file_name):
f = open(file_name, 'r')
arr = []
for line in f:
arr.append(line)
f.close()
return arr
Wenn der Inhalt der Vorlage im Browser wie "Hallo Welt !!!" angezeigt wird, ist dies erfolgreich.
Recommended Posts