[PYTHON] Post Bulletin Board Erstellung mit Flasche

Dieses Mal habe ich versucht, mit der Flasche ein Posting Bulletin Board zu erstellen. Die Verzeichnisstruktur ist wie folgt.

app.py
form_arrange.py
templates
 |__main_page.html
static
 |__css
     |__style.css
data
 |__save_data.json

Der Code wird auf github hochgeladen. Ich bin mit Javascript nicht vertraut, daher habe ich es unter Bezugnahme auf Artikel erstellt.

Implementierungsbildschirm スクリーンショット 2020-07-04 16.51.05.png

Implementierungscode

app.py


from flask import Flask,render_template,request , Markup
import json
import time

from form_arrange import form

app = Flask(__name__)

@app.route('/', methods=["GET" , "POST"])
def main_page():
    method = request.method
    save_json_path = "data/save_data.json"
    
    if method == "POST":
        former = form(form_input=dict(request.form) , save_json_path=save_json_path)
        
        if "clear" in dict(request.form).keys():
            former.save_json_clear()
            return render_template("main_page.html" , save_list=former.save_list, method=method)
        
        form_input = former.form_input
        former.write_save_json()
        return render_template("main_page.html" , save_list=former.save_list,form_input=form_input , method=method)
    else:
        former = form(save_json_path)
        save_list = former.save_list
        return render_template("main_page.html" , save_list=save_list, method=method)

if __name__ == "__main__":
    app.run(debug=True)

form_arrange.py


import json
import os,sys

class form:
    def __init__(self  , save_json_path , form_input=None):
        self.save_list = self.read_save_json(save_json_path)
        self.save_json_path = save_json_path
        if form_input != None:
            self.form_input = form_input
        
    def read_save_json(self , save_json_path):
        save_list = []
        if os.path.exists(save_json_path):
            with open(save_json_path , "r") as f:
                save_list = json.load(f)
            return save_list
        else:
            with open(self.save_json_path , "w") as f:
                save_list = json.dump(save_list, f, indent=4)
            return save_list
        
    def write_save_json(self):
        self.save_list.append(self.form_input)
        with open(self.save_json_path , "w") as f:
            save_list = json.dump(self.save_list, f, indent=4)

    def save_json_clear(self):
        self.save_list = []
        with open(self.save_json_path , "w") as f:
                json.dump(self.save_list, f, indent=4)

/templates/main_page.html


<!DOCTYPE HTML>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>Bulletin Board schreiben</title>
<link href="/static/css/style.css" rel="stylesheet" type="text/css">
<script type="text/javascript" src="/static/js/main.js"></script>
</head>
<body>

<div id="so_far_post_id" class="so_far_post_class">
<p>Vergangene Beiträge anzeigen</p>
</div>

<body onload="start()">
    <script>
    var save_list = {{ save_list|tojson }};
    function start() {
        //hinzufügen
        for(let i = 0; i < save_list.length; i++) {
            console.log(save_list[i])
            var hoge = JSON.stringify(save_list[i]);
            var pHoge = JSON.parse(hoge);

            var newElement = document.createElement("p"); //p Elementerstellung
            var newContent = document.createTextNode("---------------------------"); //Erstellen Sie einen Textknoten
            newElement.appendChild(newContent); //Fügen Sie dem p-Element einen Textknoten hinzu
            newElement.setAttribute("id",i); //Setzen Sie die ID im p-Element
            var parentDiv = document.getElementById("so_far_post_id");
            //Holen Sie sich einen Verweis auf untergeordnetes Element 3
            var childP3 = document.getElementById(i);
            parentDiv.insertBefore(newElement, childP3);

            var newElement = document.createElement("p"); //p Elementerstellung
            var newContent = document.createTextNode("Post" + pHoge.write_text); //Erstellen Sie einen Textknoten
            newElement.appendChild(newContent); //Fügen Sie dem p-Element einen Textknoten hinzu
            newElement.setAttribute("id",i); //Setzen Sie die ID im p-Element
            var parentDiv = document.getElementById("so_far_post_id");
            //Holen Sie sich einen Verweis auf untergeordnetes Element 3
            var childP1 = document.getElementById(i);
            parentDiv.insertBefore(newElement, childP1);
            
            var newElement = document.createElement("p"); //p Elementerstellung
            var newContent = document.createTextNode("Name" + pHoge.name); //Erstellen Sie einen Textknoten
            newElement.appendChild(newContent); //Fügen Sie dem p-Element einen Textknoten hinzu
            newElement.setAttribute("id",i); //Setzen Sie die ID im p-Element
            var parentDiv = document.getElementById("so_far_post_id");
            //Holen Sie sich einen Verweis auf untergeordnetes Element 3
            var childP2 = document.getElementById(i);
            parentDiv.insertBefore(newElement, childP2);


        }
}
    </script>
</body>


<p>method name {{method}}</p>

<form method="get" action="/">
<input type="submit" value="GET">
</form>

<br>

<form method="post" action="/">
<input type="submit" name="clear" value="Registrierungsdetails klar">
</form>

<form method="post" action="/">
<p>Name</p>
<input type="text" name="name">
<p>Inhalt</p>
<textarea name="write_text" cols="50" rows="10"></textarea>

<br><br>

<input type="submit" value="Post">
</form>

</body>
</html>

/static/css/style.css


.so_far_post_class {
    float: right;
    list-style: none;
    margin: 30px;
}

Recommended Posts

Post Bulletin Board Erstellung mit Flasche
Erstellen Sie ein Bulletin Board mit Heroku, Flask, SQL Alchemy
POST verschieden mit Python und empfange mit Flask
Alien Lightning Bulletin Board
IP-Einschränkung mit Flask
Hallo Welt auf Flasche
Programmieren mit Python Flask
* Android * [HTTP-Kommunikation_2] HTTP-Kommunikation mit Flask (Web-API [GET, POST] drücken)
Erstellen Sie mit Django eine Bulletin-Board-App von Grund auf neu. (Teil 3)
Stellen Sie Flask jetzt mit ZEIT bereit
Berühre Flask + laufe mit Heroku
Hallo Welt mit Flask + Hamlish
Testen Sie den Kolben mit einem Pytest
API mit Flask + uWSGI + Nginx
Post to Slack mit Python 3
Entwicklung von Webanwendungen mit Flask
Anzeigen der Kolbenabdeckung mit pytest-cov
Webanwendung mit Python + Flask ② ③
Webanwendung mit Python + Flask ④