test
├app.py
├articles.csv
├Procfile
├requirements.txt
└templates
├index.html
├layout.html
└index_result.html
Stellen Sie die virtuelle Umgebung direkt unter dem Verzeichnistest ein und starten Sie sie.
python3 -m venv .
source bin/activate
Installieren Sie das erforderliche Framework und den Webserver.
pip install flask
pip install gunicorn
Fügen Sie zunächst die Bulletin-Board-Daten in articles.csv ein.
.csv:articles.csv
Marmor,Schläfrig
Weiß,Ich bin hungrig
Schwarz,Irgendwie warm
Marmor,Poe Poe Poe
Pontan,Kein Klopapier
Naochin,Kette
Erstellen Sie app.py.
.py:app.py
# -*- coding: utf-8 -*-
from flask import Flask,request,render_template
app = Flask(__name__)
@app.route('/')
def bbs():
lines = []
#mit Öffnen, um die CSV-Datei zu lesen
with open('articles.csv',encoding='utf-8') as f:
lines = f.readlines() #readlines gibt den Inhalt von csv im Listenformat zurück
#index.Kehren Sie zu HTML zurück
return render_template('index.html',lines=lines)
#Post-Methode erhalten
@app.route('/result',methods=['POST'])
def result():
#Holen Sie sich den Wert des Artikels und des Namens auf Anfrage
article = request.form['article']
name = request.form['name']
#Schreiben Sie im Überschreibmodus in eine CSV-Datei
with open('articles.csv','a',encoding='utf-8') as f:
f.write(name + ',' + article + '\n')
#index_result.Kehren Sie zu HTML zurück
return render_template('index_result.html',article=article,name=name)
if __name__ == '__main__':
app.run(debug=False)
Erstellen Sie index.html.
.html:index.html
{% extends 'layout.html' %}
{% block content %}
<h1>Nyanko Bulletin Board</h1>
<form action='/result' method='post'>
<label for='name'>Nyankos Name</label>
<input type='text' name='name'>
<p></p>
<label for='article'>Post</label>
<input type='text' name='article'>
<button type='subimit'>Schreiben</button>
</form>
<p></p>
<p></p>
<table border=1>
<tr><th>Nyankos Name</th><th>Geposteter Inhalt</th></tr>
{% for line in lines: %}
<!--Legen Sie eine Variable namens column fest (set ist für den Variablensatz erforderlich).-->
<!--Split verwenden,Klassifizieren nach. split gibt eine Liste zurück-->
{% set column = line.rstrip().split(',') %}
<tr><td>{{column[0]}}</td><td>{{column[1]}}</td></tr>
{% endfor %}
</table>
{% endblock %}
Erstellen Sie eine HTML-Vorlage.
.html:layout.html
<!DOCTYPE html>
<html lang='ja'>
<head>
<meta charset='utf-8'>
<title>Nyanko BBS</title>
<style>body{padding:10px;}</style>
</head>
<body>
{% block content %}
{% endblock %}
</body>
</html>
Der Inhalt des in index.html eingegebenen Formulars wird durch index_result.html dargestellt.
.html:layout.html
{% extends 'layout.html' %}
{% block content %}
<h1>Nya-Ich schrieb an die Pinnwand</h1>
<p>{{name}}{{article}}</p>
<!--informieren/Zurück zu-->
<form action='/' method='get'>
<button type='submit'>Rückkehr</button>
</form>
{% endblock %}
Die Details der Bereitstellung in Heroku sind wie im folgenden Artikel beschrieben, daher werde ich die ausführliche Erklärung weglassen. Hochladen mit Heroku, Flask, Python, Git (Teil 2) Ich habe Procfile und require.txt erstellt, mit git betrieben und erfolgreich bereitgestellt.
Wenn Sie "Iwashi" oder "Ich liebe Fisch" posten, Erfolgreiches Schreiben! Wenn ich zurück gehe, Es ist ordnungsgemäß am Schwarzen Brett angebracht.Daten verschwinden nach einer Weile (30 Minuten) beim Schreiben von CSV mit Heroku, daher möchte ich ein Bulletin Board mit einer Datenbank wie SQL erstellen.
Recommended Posts