Erstellen Sie ein Webframework mit Python! (2)

Laden wir die Vorlage und zeigen sie an!

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.

Holen Sie sich das Projekt root!

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.

Laden Sie die Vorlagendatei!

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

Erstellen Sie ein Webframework mit Python! (1)
Erstellen Sie ein Webframework mit Python! (2)
Lassen Sie uns eine GUI mit Python erstellen.
Lassen Sie uns ein Diagramm mit Python erstellen! !!
Lassen Sie uns mit Python ein Shiritori-Spiel machen
Lassen Sie uns mit Python langsam sprechen
Machen wir einen Twitter-Bot mit Python!
Machen Sie eine Lotterie mit Python
Ersetzen wir UWSC durch Python (5) Machen wir einen Roboter
Lassen Sie uns einen Web-Chat mit WebSocket mit AWS serverless (Python) durchführen!
[Lass uns mit Python spielen] Ein Haushaltsbuch erstellen
Versuchen Sie, ein einfaches Spiel mit Python 3 und iPhone zu erstellen
[Super einfach] Machen wir einen LINE BOT mit Python.
Machen wir einen Blockbruch mit wxPython
Machen wir mit xCAT einen Spacon
Wenn Sie einen Discord-Bot mit Python erstellen möchten, verwenden wir ein Framework
Installieren Sie Python als Framework mit pyenv
Erstellen wir mit Python eine kostenlose Gruppe
Lassen Sie uns mit PLY 1 eine einfache Sprache erstellen
[Python] Eine schnelle Webanwendung mit Bottle!
[Python] Lassen Sie uns matplotlib mit Japanisch kompatibel machen
Führen Sie eine Python-Webanwendung mit Docker aus
Machen wir mit Pylearn 2 eine dreiäugige KI
Lassen Sie uns eine Kombinationsberechnung mit Python durchführen
Lassen Sie uns eine WEB-Anwendung für das Telefonbuch mit Flasche Teil 1 erstellen
Lassen Sie uns eine WEB-Anwendung für das Telefonbuch mit Flasche Teil 2 erstellen
Lassen Sie uns eine WEB-Anwendung für das Telefonbuch mit Flasche Teil 3 erstellen
Lassen Sie uns eine WEB-Anwendung für das Telefonbuch mit Flasche Teil 4 erstellen
Django Python Web Framework
Machen Sie Twitter Trend Bot mit Heroku + Python
Einführung in Tornado (1): Python Web Framework mit Tornado gestartet
Versuchen Sie, in Python einen "Entschlüsselungs" -Code zu erstellen
Starten Sie einen Webserver mit Python und Flask
Versuchen Sie, mit Python eine Diedergruppe zu bilden
Web Scraping mit Python (Wettervorhersage)
Lassen Sie uns mit SWIG ein Modul für Python erstellen
Web Scraping mit Python (Aktienkurs)
Extrahieren Sie mit Python Daten von einer Webseite
[Ev3dev] Lassen Sie uns ein Fernsteuerungsprogramm von Python mit dem RPyC-Protokoll erstellen
[Streamlit] Ich hasse JavaScript, deshalb erstelle ich eine Webanwendung nur mit Python
Implementieren Sie eine einfache Anwendung mit Python Full Scratch ohne Verwendung eines Webframeworks.
Kombinieren Sie sich wiederholende Zeichenfolgen mit regulären Python-Ausdrücken zu einer.
Machen wir einen Discord Bot.
Web Scraping mit Python + JupyterLab
Lassen Sie uns mit Flask eine Webanwendung zur Konvertierung von A nach B erstellen! Von Grund auf neu ...
Lassen Sie uns ein Befehls-Standby-Tool mit Python erstellen
[Übung] Erstellen Sie eine Watson-App mit Python! # 2 [Übersetzungsfunktion]
[Übung] Erstellen Sie eine Watson-App mit Python! # 1 [Sprachdiskriminierung]
Machen wir Othello mit wxPython
Machen Sie mit Python einen Haltepunkt auf der c-Ebene
Starten Sie mit Docker eine Python-Webanwendung auf Nginx + Gunicorn
Erstelle Puyopuyo AI mit Python
Web-API mit Python + Falcon
Erstellen Sie ein Lesezeichen in Python
Lassen Sie uns das Abhängigkeitsmanagement mit pip etwas einfacher machen
[Zum Spielen] Versuche Yuma zu einem LINE Bot zu machen (Python)
Schreiben wir Python mitinema4d.
Erstellen Sie mit Python Pandas Py Installer ein CSV-Formatierungswerkzeug