Pythonで簡単な掲示板を作成する。(FlaskとSQLを使ったWebアプリ開発入門)#1
Pythonでwebアプリを作る
プログラミングに何となく興味を持って勉強して文法を覚えたりなど、いろいろと手を付けて勉強してみたはいいが、じゃあそれを活用するには何をすればいいのだろう?
そのように状況に陥る人がたくさんいると思います。
InstagramやTwitterのクローンを作るなどの学習方法もありますが、作るうえではデータベースなどの知識も絡んでくるので正直しんどいです。
ここでは最低限のデータベース機能と、簡単なWebアプリ開発に用いるFlaskを利用して簡単な掲示板をつくります。
実装環境
- Window10 Home 64bit
- Python 3.6.4 |Anaconda, Inc.
ライブラリ
Flask==1.0.2
Flask-SQLAlchemy==2.3.2
Jinja2==2.10
SQLAlchemy==1.2.15
sqlite3(恐らく標準)
データベースについて
データベースではは表形式で管理されるデータを扱います。ここで作る掲示板は最小限にとどめるためこのような構成にします。
id | 日付 | 名前 | 文章 |
---|---|---|---|
1 | date1 | name1 | text1 |
2 | date2 | name2 | text2 |
使用するデータベース
ここではPythonで簡単に扱えるSqlite3を使います。
Flask
アプリの立ち上げ
app.py
from flask import Flask, render_template
app = Flask(__name__)
@app.route("/")
def bbs():
message = "Hello"
return render_template("index.html", message = message)
if __name__ == "__main__":
app.run(debug=True)
from flask import Flask, render_template
app = Flask(__name__)
@app.route("/")
def bbs():
message = "Hello"
return render_template("index.html", message = message)
if __name__ == "__main__":
app.run(debug=True)
このプログラムを実行する以下のような文字列が出力されると思います。
* Restarting with stat
* Debugger is active!
* Debugger PIN: 583-549-282
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
http://127.0.0.1:5000/でブラウザを開くとこのような表示が出ます。
これでアプリの立ち上げはできました。
Flask-SQLAlchemy
公式チュートリアルを参考にします。
SQLAlchemyではデータベースの操作をオブジェクト指向のように扱います
class Article(db.Model):
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
pub_date = db.Column(db.DateTime, nullable=False,
default=datetime.utcnow)
name = db.Column(db.Text())
article = db.Column(db.Text())
pythonのterminalで以下のようなコマンドを実行するとデータベースが作成されます。
>>> from app import db
>>> db.create_all()
>>>
実装してみる
html部分を含むソースはこちらにあります。
from flask import Flask, request, render_template
from datetime import datetime
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
db_uri = 'sqlite:///test.db'
app.config['SQLALCHEMY_DATABASE_URI'] = db_uri
db = SQLAlchemy(app)
class Article(db.Model):
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
pub_date = db.Column(db.DateTime, nullable=False,
default=datetime.utcnow)
name = db.Column(db.Text())
article = db.Column(db.Text())
@app.route("/")
def bbs():
text = Article.query.all()
return render_template("index.html", lines = text)
@app.route("/result", methods=["POST"])
def result():
date = datetime.now()
article = request.form["article"]
name = request.form["name"]
admin = Article(pub_date=date, name=name, article=article)
db.session.add(admin)
db.session.commit()
return render_template("bbs_result.html", article=article, name=name, now=date)
if __name__ == "__main__":
app.run(debug=True)
これで掲示板と同じような動きをするwebアプリの完成です。
次回はスレッド付きの掲示板の作り方とデプロイする方法について書きます。
Pythonで簡単な掲示板を作成する。(FlaskとSQLを使ったWebアプリ開発入門)#2
Author And Source
この問題について(Pythonで簡単な掲示板を作成する。(FlaskとSQLを使ったWebアプリ開発入門)#1), 我々は、より多くの情報をここで見つけました https://qiita.com/tomson784/items/a5ad6e47643449dffd18著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .