[python 04]Flask Request,直接掲示板機能を実現


Review


HTTP GET,POST方式


GETは,要求送信時に要求内容をURLにロードして転送し,POSTはHTTPメッセージのBodyにロードして転送する.FlaskでPOST方式を使用するには、この関数をルーティングする際に明記する必要があります.デフォルトではGETのみが処理されます.
@app.route('/create_process/', methods=['POST'])
def create_process():
	return 'Success!'
方法には、GET、POSTの2種類が含まれる.

Flask request、redirectによるcreate機能の実装

from flask import request
上のコードはフラスコのrequestを使用できます.
flaskが提供するリクエストにより、フォームタグは、入力された情報に簡単にアクセスできます.
@app.route("/create_process/", methods=['POST'])
def create_process():
  global nextId
  title = request.form['title']
  body = request.form['body']
  newTopic = {"id":nextId, "title":title, "body":body}
  nextId = nextId + 1
  topics.append(newTopic)
  return redirect(f'/read/{nextId-1}')
POSTで情報を要求する.form[「formラベルのname」]を使用して入力値を取得できます.
createプロセスを処理するためにcreate process()関数が作成されました.
global nextId
は、関数内で関数外で宣言されたnextId変数を変更するために必要な構文です.近づくことはできますが、変更はできません.(リストの場合、内容を変更することなくappend、deleteなどの操作を実行でき、グローバル宣言は必要ありません)
from flask import redirect
リダイレクトもFlaskによってサポートされており、ページを別の場所に接続する関数です.
@app.route("/create_process/", methods=['POST'])
def create_process():
  global nextId
  title = request.form['title']
  body = request.form['body']
  newTopic = {"id":nextId, "title":title, "body":body}
  nextId = nextId + 1
  topics.append(newTopic)
  return redirect(f'/read/{nextId-1}')
createボタンをクリックし、create processに進み、最後に/read/さっき入力した私のid/をパラメータとするリダイレクト関数を返し、/read/id/でルーティングされた関数に移動します.

Delete機能の実装

@app.route('/delete/<int:num>/')
def delete(num):
  for topic in topics:
    if(num==topic['id']):
      topics.remove(topic)
      break
  return template(f'<h2>Delete Succeeded</h2>Content number {num} deleted.')
/delete/id番号/を呼び出したときにこの投稿を削除することを実現しました.

SQLiteの起動


GlitchにはSQLiteが内蔵されており、すぐに使用できます.Glitch端末に次のように入力します.
sqlite3
sqlite 3にアクセスし、次のコマンドを使用してデータベースファイルを作成できます.
.open topics.sqlite3
そしてsqliteから脱退
.exit
入力します.
次のコマンド語topicesでsqlite 3ファイルを使用してSQLiteを実行します.
sqlite3 topics.sqlite3
今がテーマsqlite 3ファイルを使用してデータベースを構成できます.
CREATE TABLE topics (
    id    INTEGER PRIMARY KEY,
    title TEXT    NOT NULL,
    body  TEXT
);
CREATEコマンドを使用してテーブルを作成し、INSERTコマンドを使用してデータを追加できます.
INSERT INTO topics ('title', 'body') VALUES ('SQLite', 'SQLite is ...')

? Question


FlaskのPythonを使用してWebページを作成する場合、HTMLとJavaScript構文を一度に操作すると、混同やエラーが発生することがよくあります.

! Answer


慣れるしかない.

Comment


初心者が近づきやすいもので授業を構成し、簡単で概念を理解しやすい.Djangoの代わりにSQLiteを使用し、Flask、MySQLなどの他のデータベースを使用することで、実習時間と難易度を低減し、プロセス全体を理解しやすくします.明日はデータベースをバインドしてウェブサイトを作成できるので、楽しみです.