Heroku, Flask, Python, Nyanko 게시판을 "csv 파일"로 만듭니다.
(1) CSV를 사용하여 게시판 작성
<디렉토리 구성>
test
├app.py
├articles.csv
├Procfile
├requirements.txt
└templates
├index.html
├layout.html
└index_result.html
① 콘텐츠 작성
가상 환경을 디렉토리 test 바로 아래에 설정, 시작.
python3 -m venv .
source bin/activate
필요한 프레임워크와 웹 서버를 설치합니다.
pip install flask
pip install gunicorn
articles.csv에, 게시판의 데이터를 처음에 넣어 둔다.
articles.csvたま,眠いにゃー
しろ,腹減ったにゃー
クロ,なんだか暖かいにゃー
たま,ぽえーぽえーぽえー
ぽんたん,トイレットペーパーがない
なおちん,チーン
app.py를 만듭니다.
app.py# -*- coding: utf-8 -*-
from flask import Flask,request,render_template
app = Flask(__name__)
@app.route('/')
def bbs():
lines = []
#with openしてcsvファイルを読み込む
with open('articles.csv',encoding='utf-8') as f:
lines = f.readlines() #readlinesはリスト形式でcsvの内容を返す
#index.htmlに返す
return render_template('index.html',lines=lines)
#postメソッドを受け取る
@app.route('/result',methods=['POST'])
def result():
#requestでarticleとnameの値を取得する
article = request.form['article']
name = request.form['name']
#csvファイルに上書きモードで書き込む
with open('articles.csv','a',encoding='utf-8') as f:
f.write(name + ',' + article + '\n')
#index_result.htmlに返す
return render_template('index_result.html',article=article,name=name)
if __name__ == '__main__':
app.run(debug=False)
index.html을 만듭니다.
index.html{% extends 'layout.html' %}
{% block content %}
<h1> にゃん子掲示板</h1>
<form action='/result' method='post'>
<label for='name'>にゃん子の名前</label>
<input type='text' name='name'>
<p></p>
<label for='article'>投稿</label>
<input type='text' name='article'>
<button type='subimit'>書き込む</button>
</form>
<p></p>
<p></p>
<table border=1>
<tr><th>にゃん子の名前</th><th>投稿内容</th></tr>
{% for line in lines: %}
<!--columnという変数をセット(変数セットにはsetが必要) -->
<!--splitを利用して,で分類する。splitはリストを返す -->
{% set column = line.rstrip().split(',') %}
<tr><td>{{column[0]}}</td><td>{{column[1]}}</td></tr>
{% endfor %}
</table>
{% endblock %}
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>
index.html에서 입력한 양식의 내용을 index_result.html로 표시합니다.
layout.html{% extends 'layout.html' %}
{% block content %}
<h1> にゃ-んと掲示板に書き込みました</h1>
<p>{{name}}{{article}}</p>
<!--formで/に戻る -->
<form action='/' method='get'>
<button type='submit'>戻る</button>
</form>
{% endblock %}
②Heroku에 배포
Heroku에의 배치 상세는 이하의 기사에 쓴 대로이므로, 상세 설명을 생략한다.
Heroku, Flask, Python, Git으로 업로드하는 방법 (그 ②)
Procfile, requirements.txt를 작성, git로 조작하여 무사히 배포할 수 있었다.
"이와시", "물고기를 좋아한다"고 투고하면,
쓰기 성공!
돌아오면
제대로 게시판에 쓰여져 있습니다.
다음 번에는 sql을 사용하여 게시판을 만들고 싶습니다.
Heroku에서 CSV 쓰기는 잠시 후 (30 분) 데이터가 사라져 버리므로 sql 등의 데이터베이스를 사용하여 게시판을 만들고 싶다.
Reference
이 문제에 관하여(Heroku, Flask, Python, Nyanko 게시판을 "csv 파일"로 만듭니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kaonashikun/items/a91eafb0ec49589a2735
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
test
├app.py
├articles.csv
├Procfile
├requirements.txt
└templates
├index.html
├layout.html
└index_result.html
python3 -m venv .
source bin/activate
pip install flask
pip install gunicorn
たま,眠いにゃー
しろ,腹減ったにゃー
クロ,なんだか暖かいにゃー
たま,ぽえーぽえーぽえー
ぽんたん,トイレットペーパーがない
なおちん,チーン
# -*- coding: utf-8 -*-
from flask import Flask,request,render_template
app = Flask(__name__)
@app.route('/')
def bbs():
lines = []
#with openしてcsvファイルを読み込む
with open('articles.csv',encoding='utf-8') as f:
lines = f.readlines() #readlinesはリスト形式でcsvの内容を返す
#index.htmlに返す
return render_template('index.html',lines=lines)
#postメソッドを受け取る
@app.route('/result',methods=['POST'])
def result():
#requestでarticleとnameの値を取得する
article = request.form['article']
name = request.form['name']
#csvファイルに上書きモードで書き込む
with open('articles.csv','a',encoding='utf-8') as f:
f.write(name + ',' + article + '\n')
#index_result.htmlに返す
return render_template('index_result.html',article=article,name=name)
if __name__ == '__main__':
app.run(debug=False)
{% extends 'layout.html' %}
{% block content %}
<h1> にゃん子掲示板</h1>
<form action='/result' method='post'>
<label for='name'>にゃん子の名前</label>
<input type='text' name='name'>
<p></p>
<label for='article'>投稿</label>
<input type='text' name='article'>
<button type='subimit'>書き込む</button>
</form>
<p></p>
<p></p>
<table border=1>
<tr><th>にゃん子の名前</th><th>投稿内容</th></tr>
{% for line in lines: %}
<!--columnという変数をセット(変数セットにはsetが必要) -->
<!--splitを利用して,で分類する。splitはリストを返す -->
{% set column = line.rstrip().split(',') %}
<tr><td>{{column[0]}}</td><td>{{column[1]}}</td></tr>
{% endfor %}
</table>
{% endblock %}
<!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>
{% extends 'layout.html' %}
{% block content %}
<h1> にゃ-んと掲示板に書き込みました</h1>
<p>{{name}}{{article}}</p>
<!--formで/に戻る -->
<form action='/' method='get'>
<button type='submit'>戻る</button>
</form>
{% endblock %}
Heroku에서 CSV 쓰기는 잠시 후 (30 분) 데이터가 사라져 버리므로 sql 등의 데이터베이스를 사용하여 게시판을 만들고 싶다.
Reference
이 문제에 관하여(Heroku, Flask, Python, Nyanko 게시판을 "csv 파일"로 만듭니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kaonashikun/items/a91eafb0ec49589a2735텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)